package net.sf.minuteProject.configuration.bean.enrichment.convention; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang.StringUtils; import net.sf.minuteProject.configuration.bean.BusinessModel; import net.sf.minuteProject.configuration.bean.model.data.Column; import net.sf.minuteProject.configuration.bean.model.data.View; import net.sf.minuteProject.configuration.bean.model.data.impl.DDLUtils.ViewDDLUtils; import net.sf.minuteProject.utils.ColumnUtils; @SuppressWarnings("serial") public class ViewPrimaryKeyConvention extends TableDefaultPrimaryKeyConvention { // public static final String APPLY_DEFAULT_PK_OTHERWISE_FIRST_FIELD_IS_PK = "apply-default-primary-key-otherwise-first-one"; // public String defaultPrimaryKeyNames; // // public String getDefaultPrimaryKeyNames() { // return defaultPrimaryKeyNames; // } // public void setDefaultPrimaryKeyNames(String defaultPrimaryKeyNames) { // this.defaultPrimaryKeyNames = defaultPrimaryKeyNames; // } // // public void setDefaultValue(String defaultValue) { // this.defaultPrimaryKeyNames = defaultValue; // } @Override public void apply(BusinessModel model) { if (model.getBusinessPackage()!=null) { for (View view : model.getBusinessPackage().getViews()) { if (view.getPrimaryKeyColumns().length==0) apply (view); } } } private void apply(View view) { view.setVirtualPrimaryKeys(getVirtualPrimaryKey(view)); } // // private Column[] getVirtualPrimaryKey(View view) { // List<Column> pks = getPksByDefaultPrimaryKeyNames(view); // if (pks==null || pks.isEmpty()) // pks = getPksByFirstColumn(view); // return (Column[])pks.toArray(new Column[pks.size()]); // } // // private List<Column> getPksByFirstColumn(View view) { // List<Column> pks = new ArrayList<Column>(); // Column column = view.getColumn(0); // if (column!=null) // pks.add(column); // return pks; // } // // private List<Column> getPksByDefaultPrimaryKeyNames(View view) { // List<Column> pks = new ArrayList<Column>(); // String pk = getDefaultPrimaryKeyNames(); // if (pk!=null) { // pk = StringUtils.remove(pk, " "); // for (String columnName : getDefaultPrimaryKeyNames().split(",")) { // Column column = ColumnUtils.getColumn(view, columnName); // if (column!=null) // pks.add(column); // } // } // return pks; // } }