Java tutorial
// license-header java merge-point // // Generated by: MetafacadeLogicImpl.vsl in andromda-meta-cartridge. package com.googlecode.androidcartridge.metafacades.db; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; import org.andromda.metafacades.uml.AssociationEndFacade; import org.andromda.metafacades.uml.ClassifierFacade; import org.andromda.metafacades.uml.Entity; import org.andromda.metafacades.uml.EntityAttribute; import org.apache.commons.lang.StringUtils; import com.googlecode.androidcartridge.AndroidProfile; /** * <p> * Generates a Dao, a Database and eventually a contentProvider * </p> * MetafacadeLogic implementation for * org.andromda.cartridges.android.metafacades.db.AndroidEntityFacade. * * @see org.andromda.cartridges.android.metafacades.db.AndroidEntityFacade */ public class AndroidEntityFacadeLogicImpl extends AndroidEntityFacadeLogic { /** * */ private static final long serialVersionUID = -7784231194776315706L; /** * Public constructor for AndroidEntityFacadeLogicImpl * * @see org.andromda.cartridges.android.metafacades.db.AndroidEntityFacade */ public AndroidEntityFacadeLogicImpl(final Object metaObject, final String context) { super(metaObject, context); } /* * Returns a map of ForeignKeyName - AssociationEndFacade * * @return */ private Map<String, AssociationEndFacade> getFKNameAssociationEndMap() { Map<String, AssociationEndFacade> fkNames = new HashMap<String, AssociationEndFacade>(); List<AssociationEndFacade> associationEnds = getAssociationEnds(); for (AssociationEndFacade associationEndFacade : associationEnds) { boolean needFk = associationEndFacade.isMany2One() || (associationEndFacade.isOne2One() && (associationEndFacade.isAggregation() || associationEndFacade.isComposition())); if (needFk) { AssociationEndFacade otherEnd = associationEndFacade.getOtherEnd(); ClassifierFacade type = otherEnd.getType(); if (type instanceof Entity) { String fkName = "FK_" + ((Entity) type).getTableName() + "_" + otherEnd.getName(); fkNames.put(fkName, associationEndFacade); } } } return fkNames; } @Override protected AssociationEndFacade handleGetAssociationEnd(final String foreignKeyName) { return getFKNameAssociationEndMap().get(foreignKeyName); } @Override protected String handleGetContentPath(final boolean withIdentifiers, final boolean withNames) { // if!externalIdentifiers StringBuilder result = new StringBuilder("/"); String baseName = getContentSegment(); result.append(baseName); if (withIdentifiers) { Collection<EntityAttribute> identifiers = getIdentifiers(); for (EntityAttribute entityAttribute : identifiers) { result.append("/"); if (withNames) { result.append("{"); result.append(entityAttribute.getName()); result.append("}"); } else { if (entityAttribute.getSqlType().equals("INTEGER")) { result.append("#"); } else { result.append("*"); } } } } return result.toString(); } /** * * @see org.andromda.cartridges.android.metafacades.db.AndroidEntityFacade#getContentProvider() */ @Override protected Object handleGetContentProvider() { // TODO add your implementation here! return null; } @Override protected String handleGetContentSegment() { String baseName = (String) this.findTaggedValue(AndroidProfile.VALUE_CONTENT_PATH_SEGMENT); if (StringUtils.isBlank(baseName)) { baseName = getName().toLowerCase(); } return baseName; } @Override protected Collection<String> handleGetExternalIdentifiersColumnNames() { Set<String> result = new LinkedHashSet<String>(); Collection<AssociationEndFacade> externalIds = getFKNameAssociationEndMap().values(); for (AssociationEndFacade associationEndFacade : externalIds) { AssociationEndFacade otherEnd = associationEndFacade.getOtherEnd(); ClassifierFacade type = otherEnd.getType(); if (type instanceof Entity) { Entity refEntity = ((Entity) type); for (EntityAttribute identifier : refEntity.getIdentifiers()) { String columnName = getColumnName(otherEnd, refEntity, identifier); result.add(columnName); } } } return result; } private String getColumnName(AssociationEndFacade otherEnd, Entity refEntity, EntityAttribute identifier) { String prefix = (StringUtils.isBlank(otherEnd.getName()) ? refEntity.getName().toUpperCase() : otherEnd.getName().toUpperCase()) + "_"; String columnName = prefix + identifier.getColumnName(); return columnName; } @Override protected String handleGetExternalIdentifierSqlType(final String externalId) { String result = null; Collection<AssociationEndFacade> externalIds = getFKNameAssociationEndMap().values(); found: for (AssociationEndFacade associationEndFacade : externalIds) { AssociationEndFacade otherEnd = associationEndFacade.getOtherEnd(); ClassifierFacade type = otherEnd.getType(); if (type instanceof Entity) { Entity refEntity = ((Entity) type); for (EntityAttribute identifier : refEntity.getIdentifiers()) { String idCalcName = getColumnName(otherEnd, refEntity, identifier); if (idCalcName.equals(externalId)) { result = identifier.getSqlType(); break found; } } } } return result; } @Override protected Collection<String> handleGetForeignKeyNames() { return getFKNameAssociationEndMap().keySet(); } @Override protected String handleGetIdentifierColumnList() { Collection<EntityAttribute> identifiers = getIdentifiers(); Collection<String> names = new ArrayList<String>(); for (EntityAttribute identifier : identifiers) { names.add(identifier.getColumnName()); } return StringUtils.join(names, ","); } @Override protected Integer handleGetIdentifierPositionInContentURI(final String identifier) { String contentPath = getContentPath(true, true); int position = contentPath.lastIndexOf(identifier); Integer result; if (position > 0) { String trimmedPath = contentPath.substring(0, position); result = StringUtils.countMatches(trimmedPath, "/"); } else { result = -1; } return result; } /** * * @see org.andromda.cartridges.android.metafacades.db.AndroidEntityFacade#isHasContentProvider() */ @Override protected boolean handleIsHasContentProvider() { // TODO put your implementation here. return false; } @Override protected boolean handleIsSimplePrimaryKey() { Collection<EntityAttribute> identifiers = getIdentifiers(); return identifiers.size() == 1; } @Override public String getFullyQualifiedIdentifierTypeName() { // TODO Auto-generated method stub return null; } @Override public String getIdentifierGetterName() { // TODO Auto-generated method stub return null; } @Override public String getIdentifierName() { // TODO Auto-generated method stub return null; } @Override public String getIdentifierSetterName() { // TODO Auto-generated method stub return null; } @Override public String getIdentifierTypeName() { // TODO Auto-generated method stub return null; } }