package ch.elexis.data;
import org.apache.commons.lang.StringUtils;
import ch.elexis.core.constants.StringConstants;
import ch.elexis.core.data.activator.CoreHub;
import ch.elexis.core.jdt.Nullable;
import ch.elexis.core.model.IOrderEntry;
/**
* @since 3.2
*/
public class BestellungEntry extends PersistentObject implements IOrderEntry {
public static final String TABLENAME = "BESTELLUNG_ENTRY";
public static final String FLD_BESTELLUNG = "BESTELLUNG";
public static final String FLD_ARTICLE_TYPE = "ARTICLE_TYPE";
public static final String FLD_ARTICLE_ID = "ARTICLE_ID";
public static final String FLD_STOCK = "STOCK";
public static final String FLD_STATE = "STATE";
public static final String FLD_COUNT = "COUNT";
public static final String FLD_PROVIDER = "PROVIDER";
public static final int STATE_OPEN = 0;
public static final int STATE_ORDERED = 1;
public static final int STATE_PARTIAL_DELIVER = 2;
public static final int STATE_DONE = 3;
static {
addMapping(TABLENAME, FLD_BESTELLUNG, FLD_ARTICLE_TYPE, FLD_ARTICLE_ID, FLD_STOCK,
FLD_STATE + "=S:N:" + FLD_STATE, FLD_COUNT + "=S:N:" + FLD_COUNT, FLD_PROVIDER);
}
protected BestellungEntry(){}
protected BestellungEntry(final String id){
super(id);
}
public static BestellungEntry load(final String id){
return new BestellungEntry(id);
}
public BestellungEntry(Bestellung order, Artikel article, @Nullable Stock stock,
@Nullable Kontakt provider, int count){
String[] fields = new String[] {
FLD_BESTELLUNG, FLD_ARTICLE_TYPE, FLD_ARTICLE_ID, FLD_PROVIDER, FLD_STOCK
};
String[] values = new String[] {
order.getId(), article.getClass().getName(), article.getId(),
(provider != null) ? provider.getId() : null, (stock != null) ? stock.getId() : null
};
create(null, fields, values);
set(FLD_COUNT, Integer.toString(count));
}
@Override
public String getLabel(){
return toString();
}
@Override
protected String getTableName(){
return TABLENAME;
}
public int getCount(){
return getInt(FLD_COUNT);
}
public void setCount(int count){
setInt(FLD_COUNT, count);
}
public void setState(int state){
setInt(FLD_STATE, state);
}
public int getState(){
return getInt(FLD_STATE);
}
public Artikel getArticle(){
String[] vals = get(false, FLD_ARTICLE_TYPE, FLD_ARTICLE_ID);
if (StringUtils.isNotBlank(vals[1])) {
return (Artikel) CoreHub.poFactory
.createFromString(vals[0] + StringConstants.DOUBLECOLON + vals[1]);
}
return null;
}
public Kontakt getProvider(){
String providerId = get(FLD_PROVIDER);
if (StringUtils.isNotBlank(providerId)) {
return Kontakt.load(providerId);
}
return null;
}
public Stock getStock(){
String stockId = get(FLD_STOCK);
if (StringUtils.isNotBlank(stockId)) {
return Stock.load(stockId);
}
return null;
}
public void setProvider(Kontakt provider){
if (provider == null) {
set(FLD_PROVIDER, null);
} else {
set(FLD_PROVIDER, provider.getId());
}
}
}