Search in sources :

Example 16 with PersistentField

use of com.ramussoft.common.persistent.PersistentField in project ramus by Vitaliy-Yakovchuk.

the class TransactionStorageCommand method loadPersistent.

static Persistent loadPersistent(JournaledEngine engine, BinaryDataInput input) throws IOException, InstantiationException, IllegalAccessException {
    Class<? extends Persistent> key = engine.getPersistentClassById(input.read());
    PersistentRow row = engine.getPersistentMetadata(key);
    Persistent persistent = key.newInstance();
    int size = input.read();
    for (int i = 0; i < size; i++) {
        int fieldId = input.read();
        PersistentField field = row.getFieldById(fieldId);
        String fieldName = field.getName();
        PersistentWrapper wrapper = engine.getWrapper(key);
        if (input.read() == 1)
            switch(field.getType()) {
                case ATTRIBUTE:
                case ELEMENT:
                case QUALIFIER:
                case ID:
                case LONG:
                    wrapper.setField(persistent, fieldName, input.readLong());
                    break;
                case TEXT:
                    wrapper.setField(persistent, fieldName, input.readSwimedString());
                    break;
                case DATE:
                    wrapper.setField(persistent, fieldName, new Timestamp(input.readLong()));
                    break;
                case DOUBLE:
                    wrapper.setField(persistent, fieldName, input.readDouble());
                    break;
                case BINARY:
                    wrapper.setField(persistent, fieldName, input.readBinary());
                    break;
                case INTEGER:
                    wrapper.setField(persistent, fieldName, input.readInt());
                    break;
                default:
                    throw new RuntimeException("Unknown field type: " + field.getType());
            }
    }
    persistent.setValueBranchId(input.readLong());
    return persistent;
}
Also used : PersistentField(com.ramussoft.common.persistent.PersistentField) PersistentRow(com.ramussoft.common.persistent.PersistentRow) Persistent(com.ramussoft.common.persistent.Persistent) PersistentWrapper(com.ramussoft.common.persistent.PersistentWrapper) Timestamp(java.sql.Timestamp)

Example 17 with PersistentField

use of com.ramussoft.common.persistent.PersistentField in project ramus by Vitaliy-Yakovchuk.

the class AbstractJournaledEngine method equalsPrimaryKeys.

private boolean equalsPrimaryKeys(Persistent a, Persistent b) {
    PersistentWrapper wrapper = getWrapper(a.getClass());
    PersistentRow row = getPersistentMetadata(a.getClass());
    List<PersistentField> fields = row.getFields();
    for (PersistentField field : fields) if (field.isPrimary()) {
        if (!equals(wrapper.getField(a, field.getName()), wrapper.getField(b, field.getName())))
            return false;
    }
    return true;
}
Also used : PersistentField(com.ramussoft.common.persistent.PersistentField) PersistentRow(com.ramussoft.common.persistent.PersistentRow) PersistentWrapper(com.ramussoft.common.persistent.PersistentWrapper)

Example 18 with PersistentField

use of com.ramussoft.common.persistent.PersistentField 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;
}
Also used : PersistentField(com.ramussoft.common.persistent.PersistentField) PersistentRow(com.ramussoft.common.persistent.PersistentRow) Persistent(com.ramussoft.common.persistent.Persistent) PersistentWrapper(com.ramussoft.common.persistent.PersistentWrapper)

Example 19 with PersistentField

use of com.ramussoft.common.persistent.PersistentField 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) };
}
Also used : PersistentField(com.ramussoft.common.persistent.PersistentField) SQLException(java.sql.SQLException) Persistent(com.ramussoft.common.persistent.Persistent) ResultSet(java.sql.ResultSet) ArrayList(java.util.ArrayList) List(java.util.List) FindObject(com.ramussoft.common.attribute.FindObject) RowMapper(com.ramussoft.jdbc.RowMapper)

Example 20 with PersistentField

use of com.ramussoft.common.persistent.PersistentField 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;
}
Also used : PersistentField(com.ramussoft.common.persistent.PersistentField) Attribute(com.ramussoft.common.Attribute) SQLException(java.sql.SQLException) ArrayList(java.util.ArrayList) ResultSet(java.sql.ResultSet) ArrayList(java.util.ArrayList) List(java.util.List) RowMapper(com.ramussoft.jdbc.RowMapper) AttributePlugin(com.ramussoft.common.attribute.AttributePlugin) PersistentRow(com.ramussoft.common.persistent.PersistentRow) Persistent(com.ramussoft.common.persistent.Persistent) FindObject(com.ramussoft.common.attribute.FindObject) PersistentWrapper(com.ramussoft.common.persistent.PersistentWrapper)

Aggregations

PersistentField (com.ramussoft.common.persistent.PersistentField)27 PersistentRow (com.ramussoft.common.persistent.PersistentRow)25 PersistentWrapper (com.ramussoft.common.persistent.PersistentWrapper)22 ArrayList (java.util.ArrayList)11 Persistent (com.ramussoft.common.persistent.Persistent)9 SQLException (java.sql.SQLException)8 PreparedStatement (java.sql.PreparedStatement)7 List (java.util.List)7 FindObject (com.ramussoft.common.attribute.FindObject)6 RowMapper (com.ramussoft.jdbc.RowMapper)5 ResultSet (java.sql.ResultSet)5 AttributePlugin (com.ramussoft.common.attribute.AttributePlugin)4 Attribute (com.ramussoft.common.Attribute)3 Attribute (com.ramussoft.common.attribute.Attribute)2 Binary (com.ramussoft.common.persistent.Binary)2 Date (com.ramussoft.common.persistent.Date)2 Element (com.ramussoft.common.persistent.Element)2 Id (com.ramussoft.common.persistent.Id)2 Qualifier (com.ramussoft.common.persistent.Qualifier)2 Table (com.ramussoft.common.persistent.Table)2