/* * JBoss, Home of Professional Open Source. * * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. * * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. */ package org.teiid.designer.modelgenerator.salesforce.model.impl; import java.util.ArrayList; import java.util.List; import org.teiid.designer.modelgenerator.salesforce.model.DataModel; import org.teiid.designer.modelgenerator.salesforce.model.Relationship; import org.teiid.designer.modelgenerator.salesforce.model.SalesforceField; import org.teiid.designer.modelgenerator.salesforce.model.SalesforceObject; import com.sforce.soap.partner.ChildRelationship; import com.sforce.soap.partner.DescribeSObjectResult; import com.sforce.soap.partner.Field; /** * @since 8.0 */ public class SalesforceObjectImpl implements SalesforceObject { public static final String FIELD_LABEL = "label"; //$NON-NLS-1$ public static final String FIELD_NAME = "name"; //$NON-NLS-1$ public static final String FIELD_TYPE = "type"; //$NON-NLS-1$ public static final String FIELD_SORTABLE = "sortable"; //$NON-NLS-1$ public DataModel dataModel; public DescribeSObjectResult objectMetadata; private boolean selected; public SalesforceObjectImpl() { } public void setObjectMetadata( DescribeSObjectResult objectMetadata, DataModel dataModel ) { this.objectMetadata = objectMetadata; this.dataModel = dataModel; } /* (non-Javadoc) * @See org.teiid.designer.modelgenerator.salesforce.model.impl.SalesforceObject#isQueryable() */ @Override public boolean isQueryable() { return objectMetadata.isQueryable(); } /* (non-Javadoc) * @See org.teiid.designer.modelgenerator.salesforce.model.impl.SalesforceObject#getVisibleName() */ @Override public String getLabel() { return objectMetadata.getLabel(); } /* (non-Javadoc) * @See org.teiid.designer.modelgenerator.salesforce.model.impl.SalesforceObject#getFieldCount() */ @Override public int getFieldCount() { int result = 0; if (null != objectMetadata && null != objectMetadata.getFields()) { result = objectMetadata.getFields().size(); } return result; } /* (non-Javadoc) * @See org.teiid.designer.modelgenerator.salesforce.model.impl.SalesforceObject#getFields() */ @Override public SalesforceField[] getFields() { SalesforceField[] result; if (null != objectMetadata.getFields()) { result = getFields(objectMetadata); } else { result = new SalesforceField[0]; } return result; } private SalesforceField[] getFields( DescribeSObjectResult objectMetadata ) { List<Field> fields = objectMetadata.getFields(); SalesforceField[] result = new SalesforceField[fields.size()]; for (int i = 0; i < fields.size(); i++) { result[i] = new SalesforceFieldImpl(fields.get(i)); } return result; } @Override public String getName() { return objectMetadata.getName(); } @Override public List getSelectedRelationships() { return getRelationships(false); } @Override public List getAllRelationships() { return getRelationships(true); } private List getRelationships( boolean includeUnselected ) { List result; List<ChildRelationship> children = objectMetadata.getChildRelationships(); if (children != null && children.size() != 0) { result = new ArrayList(); for (int i = 0; i < children.size(); i++) { ChildRelationship childRelation = children.get(i); String childTable = childRelation.getChildSObject(); if (includeUnselected || dataModel.getSalesforceObject(childTable).isSelected()) { Relationship newRelation = new RelationshipImpl(); newRelation.setParentTable(objectMetadata.getName()); newRelation.setChildTable(childRelation.getChildSObject()); newRelation.setForeignKeyField(childRelation.getField()); newRelation.setCascadeDelete(childRelation.isCascadeDelete()); result.add(newRelation); } } } else { result = new ArrayList(); } return result; } @Override public boolean isSelected() { return selected; } @Override public void setSelected( boolean checked ) { selected = checked; if (checked) { dataModel.incrementSelectionCount(); } else { dataModel.decrementSelectionCount(); } } @Override public boolean isCreateable() { return objectMetadata.isCreateable(); } @Override public boolean isUpdateable() { return objectMetadata.isUpdateable(); } @Override public boolean isDeleteable() { return objectMetadata.isDeletable(); } @Override public boolean isSearchable() { return objectMetadata.isSearchable(); } @Override public boolean isCustom() { return objectMetadata.isCustom(); } @Override public boolean isMergeable() { return objectMetadata.isMergeable(); } @Override public boolean isReplicateable() { return objectMetadata.isReplicateable(); } @Override public boolean isRetrieveable() { return objectMetadata.isRetrieveable(); } }