com.wadpam.open.mvc.StringWrappingCrudService Maven / Gradle / Ivy
The newest version!
package com.wadpam.open.mvc;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import net.sf.mardao.core.CursorPage;
import net.sf.mardao.core.dao.Dao;
import net.sf.mardao.core.domain.AbstractCreatedUpdatedEntity;
import net.sf.mardao.core.domain.AbstractStringEntity;
/**
*
* @author sosandstrom
*/
public abstract class StringWrappingCrudService
implements CrudService {
private final CrudService delegate;
public StringWrappingCrudService(MardaoCrudService> delegate) {
this.delegate = delegate;
}
public static final Long convertId(String id) {
return null == id ? null : Long.parseLong(id);
}
public static final String convertId(Long id) {
return null == id ? null : Long.toString(id);
}
public static final ArrayList convertStringIds(Iterable ids) {
ArrayList to = new ArrayList();
for (String id : ids) {
to.add(convertId(id));
}
return to;
}
public static final ArrayList convertLongIds(Iterable ids) {
ArrayList to = new ArrayList();
for (Long id : ids) {
to.add(convertId(id));
}
return to;
}
public abstract S convertDomain(L from);
public abstract L convertDomain(S from);
public abstract void convertDomain(L from, S to);
public abstract void convertDomain(S from, L to);
public ArrayList convertLongDomains(Iterable from) {
ArrayList to = new ArrayList();
for (L l : from) {
to.add(convertDomain(l));
}
return to;
}
public ArrayList convertStringDomains(Iterable from) {
ArrayList to = new ArrayList();
for (S s : from) {
to.add(convertDomain(s));
}
return to;
}
public static void copyCreatedUpdatedEntity(AbstractCreatedUpdatedEntity from,
AbstractCreatedUpdatedEntity to) {
to.setCreatedBy(from.getCreatedBy());
to.setCreatedDate(from.getCreatedDate());
to.setUpdatedBy(from.getUpdatedBy());
to.setUpdatedDate(from.getUpdatedDate());
}
public static void convertLongEntity(LongEntity from, AbstractStringEntity to) {
AbstractCreatedUpdatedEntity acue = (AbstractCreatedUpdatedEntity) from;
copyCreatedUpdatedEntity(acue, to);
to.setId(convertId(from.getLongId()));
}
public static void convertStringEntity(AbstractStringEntity from, LongEntity to) {
AbstractCreatedUpdatedEntity acue = (AbstractCreatedUpdatedEntity) to;
copyCreatedUpdatedEntity(from, acue);
to.setLongId(convertId(from.getId()));
}
protected CrudService getDelegate() {
return delegate;
}
@Override
public S createDomain() {
return convertDomain(getDelegate().createDomain());
}
@Override
public String create(S domain) {
L l = convertDomain(domain);
Long id = getDelegate().create(l);
convertDomain(l, domain);
return convertId(id);
}
@Override
public void delete(String parentKeyString, String id) {
getDelegate().delete(parentKeyString, convertId(id));
}
@Override
public void delete(String parentKeyString, Iterable ids) {
getDelegate().delete(parentKeyString, convertStringIds(ids));
}
@Override
public void exportCsv(OutputStream out, Long startDate, Long endDate) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public S get(String parentKeyString, String id) {
final Long lid = convertId(id);
final L d = getDelegate().get(parentKeyString, lid);
return convertDomain(d);
}
@Override
public Iterable getByPrimaryKeys(Iterable ids) {
Iterable l = getDelegate().getByPrimaryKeys(convertStringIds(ids));
return convertLongDomains(l);
}
@Override
public CursorPage getPage(int pageSize, String cursorKey) {
CursorPage page = getDelegate().getPage(pageSize, cursorKey);
// in-page conversion
page.setItems(convertLongDomains(page.getItems()));
return page;
}
@Override
public String getSimpleKey(S domain) {
L l = convertDomain(domain);
Long id = getDelegate().getSimpleKey(l);
return convertId(id);
}
@Override
public String getParentKeyString(S domain) {
L l = convertDomain(domain);
return getDelegate().getParentKeyString(l);
}
@Override
public String getPrimaryKeyColumnName() {
return getDelegate().getPrimaryKeyColumnName();
}
@Override
public Class getPrimaryKeyColumnClass() {
return String.class;
}
@Override
public String getTableName() {
return getDelegate().getTableName();
}
@Override
public Map getTypeMap() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
public void setDao(Dao dao) {
((MardaoCrudService)delegate).setDao(dao);
}
@Override
public String update(S domain) {
L l = convertDomain(domain);
Long id = getDelegate().update(l);
convertDomain(l, domain);
return convertId(id);
}
@Override
public List upsert(Iterable domains) {
ArrayList l = convertStringDomains(domains);
Iterable ids = getDelegate().upsert(l);
return convertLongIds(ids);
}
@Override
public CursorPage whatsChanged(Date since, String createdBy, String updatedBy,
int pageSize, String cursorKey) {
CursorPage page = getDelegate().whatsChanged(since, createdBy, updatedBy,
pageSize, cursorKey);
// in-page conversion
page.setItems(convertLongDomains(page.getItems()));
return page;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy