package ch.elexis.data; import java.util.List; import org.apache.commons.lang.StringUtils; import ch.elexis.core.model.IStock; /** * A Stock is the definition of a storage for articles. A stock is referred to by {@link StockEntry} * elements, which represent the articles in store. * * @since 3.2 */ public class Stock extends PersistentObject implements IStock { public static final String TABLENAME = "STOCK"; public static final String FLD_CODE = "CODE"; public static final String FLD_PRIORITY = "PRIORITY"; public static final String FLD_OWNER = "OWNER"; public static final String FLD_RESPONSIBLE = "RESPONSIBLE"; public static final String FLD_LOCATION = "LOCATION"; public static final String FLD_DESCRIPTION = "DESCRIPTION"; public static final String FLD_DRIVER_UUID = "DRIVER_UUID"; public static final String FLD_DRIVER_CONFIG = "DRIVER_CONFIG"; public static final String FLD_JOINT_STOCK_ENTRIES = "STOCK_ENTRIES"; public static final String DEFAULT_STOCK_ID = "STD"; static { addMapping(TABLENAME, FLD_ID, FLD_CODE, FLD_PRIORITY + "=S:N:" + FLD_PRIORITY, FLD_OWNER, FLD_RESPONSIBLE, FLD_LOCATION, FLD_DESCRIPTION, FLD_DRIVER_UUID, FLD_DRIVER_CONFIG, FLD_JOINT_STOCK_ENTRIES + "=LIST:STOCK:" + StockEntry.TABLENAME); } protected Stock(){} protected Stock(final String id){ super(id); } public Stock(final String code, int globalPriority){ create(null); set(new String[] { FLD_CODE, FLD_PRIORITY }, code, Integer.toString(globalPriority)); } public static Stock load(final String id){ return new Stock(id); } @Override public String getLabel(){ String[] values = get(false, FLD_CODE, FLD_DESCRIPTION); if (!StringUtils.isBlank(values[1])) { return "[" + values[0] + "] " + values[1]; } return values[0]; } @Override protected String getTableName(){ return TABLENAME; } @Override public boolean delete(){ List<String> list = getList(FLD_JOINT_STOCK_ENTRIES, false); for (String id : list) { StockEntry.load(id).delete(); } return super.delete(); } @Override public boolean removeFromDatabase(){ List<String> list = getList(FLD_JOINT_STOCK_ENTRIES, false, true); for (String id : list) { StockEntry.load(id).removeFromDatabase(); } return super.removeFromDatabase(); } public Integer getPriority(){ String val = get(FLD_PRIORITY); if (StringUtils.isNotBlank(val)) { try { return Integer.valueOf(val); } catch (NumberFormatException nfe) {} } return null; } public void setPriority(Integer value){ setInt(FLD_PRIORITY, value); } public String getCode(){ return get(FLD_CODE); } public void setCode(String code){ set(FLD_CODE, code); } public String getDescription(){ return get(FLD_DESCRIPTION); } public void setDescription(String description){ set(FLD_DESCRIPTION, description); } public String getLocation(){ return get(FLD_LOCATION); } public void setLocation(String location){ set(FLD_LOCATION, location); } public Mandant getOwner(){ String mandatorId = get(FLD_OWNER); if (StringUtils.isNotBlank(mandatorId)) { return Mandant.load(mandatorId); } return null; } public void setOwner(Mandant owner){ if (owner != null) { set(FLD_OWNER, owner.getId()); return; } set(FLD_OWNER, null); } public Kontakt getResponsible(){ String responsibleId = get(FLD_RESPONSIBLE); if (StringUtils.isNotBlank(responsibleId)) { return Kontakt.load(responsibleId); } return null; } public void setResponsible(Kontakt contact){ if (contact != null) { set(FLD_RESPONSIBLE, contact.getId()); return; } set(FLD_RESPONSIBLE, null); } public String getDriverUuid(){ return get(FLD_DRIVER_UUID); } public void setDriverUuid(String driverUuid){ set(FLD_DRIVER_UUID, driverUuid); } public String getDriverConfig(){ return get(FLD_DRIVER_CONFIG); } public void setDriverConfig(String driverConfig){ set(FLD_DRIVER_CONFIG, driverConfig); } }