package ch.elexis.labor.medics.v2.data;
import java.io.File;
import java.io.FileInputStream;
import java.text.MessageFormat;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ch.elexis.core.data.util.PlatformHelper;
import ch.elexis.core.ui.util.SWTHelper;
import ch.elexis.data.Kontakt;
import ch.elexis.data.PersistentObject;
import ch.elexis.labor.medics.v2.Messages;
import ch.rgw.tools.ExHandler;
import ch.rgw.tools.JdbcLink;
import ch.rgw.tools.JdbcLink.Stm;
public class KontaktOrderManagement extends PersistentObject {
public static final String TABLENAME = "KONTAKT_ORDER_MANAGEMENT"; //$NON-NLS-1$
public static final String FLD_KONTAKT_ID = "KONTAKT_ID"; //$NON-NLS-1$
public static final String FLD_ORDER_NR = "ORDER_NR"; //$NON-NLS-1$
public static long FIRST_ORDER_NR = 100000;
private static final JdbcLink j = getConnection();
protected static Logger log = LoggerFactory.getLogger(KontaktOrderManagement.class.getName());
static {
if (!tableExists(TABLENAME)) {
String filepath = PlatformHelper.getBasePath("ch.elexis.laborimport.medics.v2") //$NON-NLS-1$
+ File.separator + "createTable.script"; //$NON-NLS-1$
Stm stm = j.getStatement();
try {
FileInputStream fis = new FileInputStream(filepath);
stm.execScript(fis, true, true);
} catch (Exception e) {
ExHandler.handle(e);
SWTHelper.showError(Messages.KontaktOrderManagement_titleErrorCreateDB,
MessageFormat.format(Messages.KontaktOrderManagement_messageErrorCreateDB,
filepath));
} finally {
j.releaseStatement(stm);
}
}
addMapping(TABLENAME, FLD_KONTAKT_ID, FLD_ORDER_NR);
}
public KontaktOrderManagement(){
super();
}
private KontaktOrderManagement(String id){
super(id);
}
public KontaktOrderManagement(final Kontakt kontakt){
create(null);
setKontakt(kontakt);
setOrderNr(FIRST_ORDER_NR);
}
/** Eine KontaktOrderManagement anhand der ID aus der Datenbank laden */
public static KontaktOrderManagement load(String id){
return new KontaktOrderManagement(id);
}
public Kontakt getKontakt(){
return Kontakt.load(get(FLD_KONTAKT_ID));
}
public void setKontakt(final Kontakt kontakt){
if (kontakt != null) {
set(FLD_KONTAKT_ID, kontakt.getId());
}
}
/**
* Transforms text into int value.
*
* @param doubleStr
* @return
*/
private static Long getLong(final String longStr){
Long value = null;
if (longStr != null && longStr.length() > 0) {
try {
value = Long.parseLong(longStr);
} catch (NumberFormatException e) {
log.warn(MessageFormat.format("Could not parse long {0}!", longStr), e);
}
}
return value;
}
public Long getOrderNr(){
String intStr = get(FLD_ORDER_NR);
return getLong(intStr);
}
public void setOrderNr(final Long orderNr){
if (orderNr != null) {
set(FLD_ORDER_NR, orderNr.toString());
}
}
@Override
public String getLabel(){
Kontakt kontakt = getKontakt();
if (kontakt != null) {
return kontakt.getLabel() + " (" + getOrderNr() + ")"; //$NON-NLS-1$ //$NON-NLS-2$
}
return "-"; //$NON-NLS-1$
}
@Override
protected String getTableName(){
return TABLENAME;
}
}