use of com.ramussoft.common.persistent.Persistent in project ramus by Vitaliy-Yakovchuk.
the class AbstractJournaledEngine method equalsAllFields.
private boolean equalsAllFields(PersistentPare pare) {
Persistent a = pare.oldPersistent;
Persistent b = pare.newPersistent;
PersistentWrapper wrapper = getWrapper(a.getClass());
PersistentRow row = getPersistentMetadata(a.getClass());
for (PersistentField f : row.getFields()) {
if (!f.isAutoset()) {
String field = f.getName();
if (!equals(wrapper.getField(a, field), wrapper.getField(b, field)))
return false;
}
}
return true;
}
use of com.ramussoft.common.persistent.Persistent in project ramus by Vitaliy-Yakovchuk.
the class BooleanPlugin method getAttributeConverter.
@Override
public AttributeConverter getAttributeConverter() {
return new AbstractAttributeConverter() {
@SuppressWarnings("unchecked")
@Override
public List<Persistent>[] toPersistens(Object object, long elementId, long attributeId, IEngine engine) {
if (object == null)
return new List[] { new ArrayList<Persistent>(0) };
ArrayList<Persistent> l = new ArrayList<Persistent>(1);
l.add(new BooleanPersistent(((Boolean) object) ? 1 : 0));
return new List[] { l };
}
@SuppressWarnings("unchecked")
@Override
public Object toObject(List<Persistent>[] persistents, long elementId, long attributeId, IEngine engine) {
List l = persistents[0];
if (l.size() == 0)
return null;
BooleanPersistent p = (BooleanPersistent) l.get(0);
return p.getValue() != 0;
}
};
}
use of com.ramussoft.common.persistent.Persistent in project ramus by Vitaliy-Yakovchuk.
the class IEngineImpl method getEListFixed.
private List<Persistent>[] getEListFixed(final PersistentRow row, final Class<? extends Persistent> clazz, final PersistentWrapper wrapper, ArrayList<String> paramFields, ArrayList<Object> params, long branchId) {
String sqlBranchCondition = " AND value_branch_id<=? " + "AND (removed_branch_id > ? OR removed_branch_id is NULL)";
StringBuffer sb = new StringBuffer("SELECT * FROM " + row.getTableName());
if (params.size() > 0) {
sb.append(" WHERE ");
}
boolean first = true;
for (int j = 0; j < params.size(); j++) {
if (first) {
first = false;
} else {
sb.append(" AND ");
}
sb.append(paramFields.get(j));
sb.append("=?");
}
sb.append(sqlBranchCondition);
params.add(branchId);
params.add(branchId);
return new List[] { template.query(sb.toString(), new RowMapper() {
@Override
public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
try {
Persistent persistent = clazz.newInstance();
for (PersistentField field : row.getFields()) {
wrapper.setDatabaseField(persistent, field, rs);
}
return persistent;
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
throw new RuntimeException();
}
}, params.toArray(), true) };
}
use of com.ramussoft.common.persistent.Persistent in project ramus by Vitaliy-Yakovchuk.
the class IEngineImpl method getBinaryAttribute.
@Override
@SuppressWarnings("unchecked")
public List<Persistent>[] getBinaryAttribute(long elementId, long attributeId) {
throwExaptionIfNotCan(getAccessor().canReadElement(elementId, attributeId), "Can not get attribute.");
Attribute attribute = getAttribute(attributeId);
AttributePlugin plugin = factory.getAttributePlugin(attribute.getAttributeType());
final Class<? extends Persistent>[] classes;
if (elementId >= 0)
classes = plugin.getAttributePersistents();
else
classes = plugin.getAttributePropertyPersistents();
List<Persistent>[] lists = new List[classes.length];
for (int i = 0; i < lists.length; i++) {
final Class<? extends Persistent> clazz = classes[i];
final PersistentRow row = metadata.get(clazz);
final PersistentWrapper wrapper = wrappers.get(clazz);
ArrayList<Object> params = new ArrayList<Object>(2);
ArrayList<String> paramFields = new ArrayList<String>(2);
plugin.fillAttributeQuery(row, attributeId, elementId, params, paramFields, this);
if (elementId >= 0l && attribute.getAttributeType().getTypeName().equals("ElementList") && attribute.getAttributeType().getPluginName().equals("Core")) {
return getEListFixed(row, clazz, wrapper, paramFields, params, getActiveBranchId());
}
long branchId = 0l;
try {
branchId = getBranch(prefix + "attributes_data_metadata", new Object[] { "element_id", "attribute_id" }, new Object[] { elementId, attributeId }, getActiveBranchId());
} catch (SQLException e1) {
e1.printStackTrace();
throw new RuntimeException(e1);
}
params.add(branchId);
paramFields.add("value_branch_id");
StringBuffer sb = new StringBuffer("SELECT * FROM " + row.getTableName());
if (params.size() > 0) {
sb.append(" WHERE ");
}
boolean first = true;
for (int j = 0; j < params.size(); j++) {
if (first) {
first = false;
} else {
sb.append(" AND ");
}
sb.append(paramFields.get(j));
sb.append("=?");
}
List<Persistent> list = template.query(sb.toString(), new RowMapper() {
@Override
public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
try {
Persistent persistent = clazz.newInstance();
for (PersistentField field : row.getFields()) {
wrapper.setDatabaseField(persistent, field, rs);
}
return persistent;
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
throw new RuntimeException();
}
}, params.toArray(new Object[params.size()]), true);
lists[i] = list;
}
return lists;
}
use of com.ramussoft.common.persistent.Persistent in project ramus by Vitaliy-Yakovchuk.
the class IEngineImpl method executeTransaction.
private void executeTransaction(final Transaction transaction, Connection connection) throws SQLException {
for (Persistent key : transaction.getUpdate()) {
PersistentRow row = metadata.get(key.getClass());
PersistentWrapper wrapper = wrappers.get(key.getClass());
StringBuffer sb = new StringBuffer("UPDATE " + row.getTableName() + " SET ");
boolean first = true;
List<Object> list = new ArrayList<Object>(5);
for (PersistentField field : row.getDataFields()) {
if (first) {
first = false;
} else {
sb.append(", ");
}
sb.append(field.getDatabaseName());
sb.append("=?");
list.add(wrapper.getField(key, field.getName()));
}
sb.append(" WHERE ");
first = true;
for (PersistentField field : row.getKeyFields()) {
if (first) {
first = false;
} else {
sb.append(" AND ");
}
sb.append(field.getDatabaseName());
sb.append("=?");
list.add(wrapper.getField(key, field.getName()));
}
PreparedStatement ps = template.getPreparedStatement(sb.toString(), true);
template.setParams(ps, list.toArray(new Object[list.size()]));
ps.execute();
// ps.close();
}
for (Persistent key : transaction.getDelete()) {
PersistentRow row = metadata.get(key.getClass());
PersistentWrapper wrapper = wrappers.get(key.getClass());
StringBuffer sb = new StringBuffer("DELETE FROM " + row.getTableName() + " WHERE ");
boolean first = true;
first = true;
List<Object> list = new ArrayList<Object>(2);
for (PersistentField field : row.getKeyFields()) {
if (first) {
first = false;
} else {
sb.append("AND ");
}
sb.append(field.getDatabaseName());
sb.append("=?");
list.add(wrapper.getField(key, field.getName()));
}
PreparedStatement ps = template.getPreparedStatement(sb.toString(), // connection.prepareStatement(sb.toString());
true);
template.setParams(ps, list.toArray(new Object[list.size()]));
ps.execute();
// ps.close();
}
for (Persistent key : transaction.getSave()) {
PersistentRow row = metadata.get(key.getClass());
PersistentWrapper wrapper = wrappers.get(key.getClass());
StringBuffer sb = new StringBuffer("INSERT INTO " + row.getTableName() + "(");
boolean first = true;
List<Object> list = new ArrayList<Object>(5);
for (PersistentField field : row.getFields()) {
if (first) {
first = false;
} else {
sb.append(", ");
}
sb.append(field.getDatabaseName());
list.add(wrapper.getField(key, field.getName()));
}
sb.append(") VALUES(");
first = true;
for (int i = 0; i < list.size(); i++) {
if (first) {
first = false;
} else {
sb.append(", ");
}
sb.append("?");
}
sb.append(")");
PreparedStatement ps = template.getPreparedStatement(sb.toString(), // connection.prepareStatement(sb.toString());
true);
template.setParams(ps, list.toArray(new Object[list.size()]));
ps.execute();
// ps.close();
}
}
Aggregations