Package com.force.sdk.jpa.table

Examples of com.force.sdk.jpa.table.ColumnImpl


        if (ammd.getEmbeddedMetaData() != null) {
            // we need to add all the embedded fields
            storeEmbeddedFields(ammd, value);
            return;
        }
        ColumnImpl column = table.getColumnFor(objectProvider.getClassMetaData(), ammd);
        if (column == null || column.getField() == null || !column.getField().isCreateable()) return;
        Object actualValue = value;
        String actualFieldName = column.getFieldName();
        try {
            switch (column.getType()) {
            case datetime:
                if (value instanceof Date) {
                    ColumnMetaData[] cmds = ammd.getColumnMetaData();
                    Calendar cal = Calendar.getInstance();
                    cal.setTime((Date) value);
                    if (cmds != null && cmds.length > 0 && "TIME".equals(cmds[0].getJdbcType())) {
                        actualValue = new Time(cal);
                    } else {
                        actualValue = cal;
                    }
                } else if (value instanceof Time) {
                    actualValue = value;
                }
                break;
            case currency:
                actualValue = value.toString();
                break;
            case reference:
                AbstractClassMetaData acmd =
                    storeManager.getMetaDataManager().getMetaDataForClass(ammd.getType(),
                                                        objectProvider.getExecutionContext().getClassLoaderResolver());
                if (acmd != null) {
                    actualValue = PersistenceUtils.getMemberValue(acmd, acmd.getPKMemberPositions()[0], value);
                    if (actualValue == null) {
                        ObjectManager om = ((ObjectProviderImpl) objectProvider).getStateManager().getObjectManager();
                        if (((ForceObjectManagerImpl) om).isInAllOrNothingMode()) {
                            /**
                             * This is instance of AllOrNothing transaction
                             * Since the parent object has not been saved to the db yet
                             * we do not have an id yet so we link objects by extId
                             */
                            SObject parentRef = new SObject();
                            TableImpl parent = storeManager.getTable(acmd);
                            if (parent.getExternalIdColumn() == null) {
                                throw new NucleusUserException("EntityManager in persistence.xml has 'force.AllOrNothing'"
                                                               + " set to true. In this mode all top parent Entities must"
                                                               + " have an externalId field. Offending entity: "
                                                               + parent.getTableName().getName());
                            }
                            parentRef.setType(parent.getTableName().getForceApiName());
                            SObject parentSObject = ((ForceObjectManagerImpl) om).getParentSObject(value);
                            parentRef.setField(parent.getExternalIdColumn().getFieldName(),
                                                parentSObject.getField(parent.getExternalIdColumn().getFieldName()));
                            actualValue = parentRef;
                            actualFieldName = column.getForceApiRelationshipName();
                        } else {
                            throw new NucleusUserException("Child entity cannot be saved before parent entity.");
                        }
                    }
                } else {
View Full Code Here


            try {
                Object newValue = PersistenceUtils.getMemberValue(eammd.getMemberRepresented(), value);
                if (eammd.getEmbeddedMetaData() != null) {
                    storeEmbeddedFields(eammd, newValue);
                } else {
                        ColumnImpl column = table.getColumnFor(cmd, eammd);
                        if (column != null) {
                            sobject.addField(column.getFieldName(), newValue);
                            dirty = true;
                        }
                }
            } catch (Exception e) {
                throw new NucleusUserException(e.getMessage());
View Full Code Here

     * delegate to this one and then parse it into the proper type (like an int or double)
     * {@inheritDoc}
     */
    @Override
    public String fetchStringField(int fieldNumber) {
        ColumnImpl column = table.getColumnAt(acmd, fieldNumber);
        Object ret = sobject.getField(column.getFieldName());
        return ret != null ? (String) ret : null;
    }
View Full Code Here

                    mapKeyPosition = cmd.getAbsolutePositionOfMember(ammd.getKeyMetaData().getMappedBy());
                }
            }

            // Reset column to the related field
            ColumnImpl column = table.getColumnFor(cmd, ammd);
           
            String relationshipName = column.getSelectFieldName();
           
            Iterator<XmlObject> rel = sobject.getChildren(relationshipName);
            while (rel.hasNext()) {
                Iterator<XmlObject> subs = rel.next().getChildren("records");
               
                // This is used for Native query
                int[] fieldsToLoad = cmd != null ? cmd.getDFGMemberPositions() : null;
               
                try {
                    while (subs.hasNext()) {
                        final XmlObject child = subs.next();
                        Object value = ec.findObjectUsingAID(new Type(ec.getClassLoaderResolver().
                                classForName(cmd.getFullClassName())),
                                ForceQueryUtils.getFieldValues2(cmd, fieldsToLoad, mconn, storeManager, child, query),
                                query == null ? true : query.getIgnoreCache(), true);
                       
                        if (childrenColl != null) {
                            childrenColl.add(value);
                        } else {
                            childrenMap.put(PersistenceUtils.getMemberValue(cmd, mapKeyPosition, value), value);
                        }
                    }
                } catch (Exception e) {
                    throw new NucleusUserException(e.getMessage(), e);
                }
            }
            if (objectProvider != null) {
                  Object ret = childrenColl != null ? childrenColl : childrenMap;
                return SCOUtils.newSCOInstance(objectProvider, ammd, ammd.getType(),
                        (ret != null ? ret.getClass() : null), ret, false, false, false);
            } else {
                // This is for Collection MEMBEROF and Map Key, Value, Entry operation only. The collection will be read only.
                return childrenColl != null ? Collections.unmodifiableCollection(childrenColl)
                                                : Collections.unmodifiableMap(childrenMap);
            }
        } else if (ammd.getEmbeddedMetaData() != null) {
            return fetchEmbeddedObject(ammd);
        }

        ColumnImpl column = table.getColumnFor(acmd, ammd);
        Object o = valueOverride != null ? valueOverride : sobject.getField(column.getSelectFieldName());
        if (o == null) return null;
        Calendar cal;
        Object tvalue;
        switch (column.getType()) {
        case _boolean:
            return Boolean.parseBoolean((String) o);
        case _int:
        case percent:
            if (ammd.getType() == Long.class || ammd.getType() == long.class) {
                try {
                    return Long.parseLong((String) o);
                } catch (NumberFormatException ne) {
                    return Double.valueOf((String) o).longValue();
                }
            } else if (ammd.getType() == Short.class || ammd.getType() == short.class)
                return Double.valueOf((String) o).shortValue();
            else if (ammd.getType() == Float.class || ammd.getType() == float.class)
                return Float.parseFloat((String) o);
            else if (ammd.getType() == Double.class || ammd.getType() == double.class)
                return Double.parseDouble((String) o);
            else if (ammd.getType() == BigInteger.class) {
                DecimalFormat f = new DecimalFormat("0.##################E0");
                f.setGroupingUsed(false);
                return new BigInteger(f.parse((String) o, new ParsePosition(0)).toString());
            } else {
                return Double.valueOf((String) o).intValue();
            }
        case _double:
            if (ammd.getType() == Float.class || ammd.getType() == float.class) {
                return Float.parseFloat((String) o);
            } else {
                return Double.parseDouble((String) o);
            }
        case currency:
            return new BigDecimal((String) o, new MathContext(column.getField().getPrecision()))
                        .setScale(column.getField().getScale(), RoundingMode.HALF_DOWN);
        case date:
            tvalue = new DateCodec().deserialize((String) o).getTime();
            return objectProvider != null ? SCOUtils.newSCOInstance(objectProvider, ammd, ammd.getType(),
                    (tvalue != null ? tvalue.getClass() : null), tvalue, false, false, false) : tvalue;
        case datetime:
View Full Code Here

            }
        }
       
        DiscriminatorMetaData dmd = acmd.getDiscriminatorMetaData();
        if (dmd != null && dmd.getColumnName() != null) {
            ColumnImpl col = table.getColumnByForceApiName(dmd.getColumnName());
            if (col != null) {
                String javaFieldName = dmd.getColumnName();
                table.registerJavaColumn(javaFieldName, col);
            }
        }
View Full Code Here

        if (ammd.getEmbeddedMetaData() != null) {
            for (AbstractMemberMetaData eammd : ammd.getEmbeddedMetaData().getMemberMetaData()) {
                addColumn(table, eammd, omf);
            }
        } else {
            ColumnImpl col = table.getColumnByForceApiName(PersistenceUtils.getForceApiName(ammd, omf));
            if (col != null) {
                String javaFieldName = ammd.getName();
                table.registerJavaColumn(javaFieldName, col);
            }
        }
View Full Code Here

TOP

Related Classes of com.force.sdk.jpa.table.ColumnImpl

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.