// PROGRESS
package emw.metaworks.server;
import emw.metaworks.model.*;
import emw.metaworks.util.*;
import java.util.Date;
import java.util.Hashtable;
public class ProgressFormat extends DatabaseFormat {
protected static UTCDateFormat dateFormat = new UTCDateFormat("MM/dd/yyyy");
protected static String DELETE = "delete from";
public String formatObject(Object obj) {
if (obj instanceof Boolean) return (((Boolean)obj).booleanValue())?"yes":"no";
if (obj instanceof java.util.Date || obj instanceof java.sql.Date ) {
return "date('"+dateFormat.format(obj)+"')";
}
return super.formatObject(obj);
}
public String createUpdateStatement(Data data, Object user_oid) {
DataDescriptor dd = data.getDescriptor();
String mainTable = dd.getDBTable(dd.getOidId(), false);
String qualifiedName=createQualifiedName(dd.getDB(),mainTable,null);
StringBuffer set=null, where = null;
for (int j = 0 ; j < data.getAttributesCount(); j++){
String attributTableName = dd.getDBTable(j, false);
if (!mainTable.equals(attributTableName) || !data.wasChanged(j)){
continue;
}
set=concatExpressions(set,",",
getExpression(dd.getAttributeName(j),
Kriterium.EQ,
data.getAttribute(j)));
}
where = createOidExpression(data.getOids(), dd);
if (data.getLastModify()!=null) {
set=concatExpressions(set,",",
getExpression("geaendert_von",
Kriterium.EQ,
user_oid));
set=concatExpressions(set,",",
getExpression("geaendert_datum",
Kriterium.EQ,
new java.sql.Date(System.currentTimeMillis())));
where=andExpressions(where,
getExpression("geaendert_datum",
Kriterium.LE,
new java.sql.Date(data.getLastModify().getTime())));
}
return UPDATE + " " + qualifiedName + " " +
SET + " " + notNullString(set) + " " +
WHERE + " " + notNullString(where);
}
}
// ORACLE
package emw.metaworks.server;
import emw.metaworks.model.*;
import emw.metaworks.util.*;
import java.util.Date;
import java.util.Hashtable;
public class OracleFormat extends DatabaseFormat {
protected static UTCDateFormat dateFormat = new UTCDateFormat("yyyy-MM-dd HH:mm:ss");
protected static String DELETE = "delete";
public String formatObject(Object obj) {
if (obj instanceof java.util.Date) {
return "to_date('" + dateFormat.format(obj) +
"','YYYY-MM-DD HH24:MI:SS')";
}
if (obj instanceof Boolean) return (((Boolean)obj).booleanValue())?"1":"0";
return super.formatObject(obj);
}
public String createUpdateStatement(Data data, Object user_oid) {
DataDescriptor dd = data.getDescriptor();
String mainTable = dd.getDBTable(dd.getOidId(), false);
String qualifiedName=createQualifiedName(dd.getDB(),mainTable,null);
StringBuffer set=null, where = null, values=null;
for (int j = 0 ; j < data.getAttributesCount(); j++){
String attributTableName = dd.getDBTable(j, false);
if (!mainTable.equals(attributTableName) || !data.wasChanged(j)){
continue;
}
set=concatExpressions(set,",", dd.getAttributeName(j));
values=concatExpressions(values,",", formatObject(data.getAttribute(j)));
}
where = createOidExpression(data.getOids(), dd);
if (data.getLastModify()!=null) {
set=concatExpressions(set,",","geaendert_von");
values=concatExpressions(values,",",formatObject(user_oid));
set=concatExpressions(set,",","geaendert_datum");
values=concatExpressions(values,",",formatObject(
new java.sql.Date(System.currentTimeMillis())));
where=andExpressions(where,
getExpression("geaendert_datum",
Kriterium.LE,
new java.sql.Date(data.getLastModify().getTime())));
}
return UPDATE + " " + qualifiedName + " " +
SET + " (" + notNullString(set) + ") = " +
" ( select " + notNullString(values) + " from dual ) " +
WHERE + " " + notNullString(where);
}
}