Rev 41 | Rev 49 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
/****/package in.shop2020.metamodel.definitions;import in.shop2020.metamodel.util.DBUtils;import in.shop2020.metamodel.util.ExpandedCategory;import in.shop2020.metamodel.util.MM;import java.io.Serializable;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.Map;/*** @author naveen**/public class DefinitionsContainer implements Serializable {/****/private static final long serialVersionUID = 1L;private Map<Long, Category> categories;private Map<Long, SlideDefinition> slideDefinitions;private Map<Long, FeatureDefinition> featureDefinitions;private Map<Long, DatatypeDefinition> datatypeDefinitions;private Map<Long, EnumValue> enumValues;private Map<Long, Unit> units;/****/public DefinitionsContainer() {// Lazy initialization}/**** @return Map* @throws Exception*/@SuppressWarnings("unchecked")public Map<Long, Unit> getUnits() throws Exception {// De-serializeif(this.units == null) {String dbFile = MM.DEFINITIONS_DB_PATH + "units" + ".ser";this.units = (Map<Long, Unit>) DBUtils.read(dbFile);}return this.units;}/**** @param unitID* @return Unit* @throws Exception*/public Unit getUnit(long unitID) throws Exception {// Initializeif(this.units == null) {this.getUnits();}return this.units.get(new Long(unitID));}/*** @return the datatypeDefinitions* @throws Exception*/@SuppressWarnings("unchecked")public Map<Long, DatatypeDefinition> getDatatypeDefinitions()throws Exception {// De-serializeif(this.datatypeDefinitions == null) {String dbFile = MM.DEFINITIONS_DB_PATH + "datatypedefinitions" +".ser";this.datatypeDefinitions =(Map<Long, DatatypeDefinition>) DBUtils.read(dbFile);}return this.datatypeDefinitions;}/**** @param unitID* @return Unit* @throws Exception*/public DatatypeDefinition getDatatypeDefinition(long id) throws Exception {// Initializeif(this.datatypeDefinitions == null) {this.getDatatypeDefinitions();}return this.datatypeDefinitions.get(new Long(id));}/**** @param datatypeDefID* @param value* @return long enumValueID - "-1" if not found* @throws Exception*/public long getEnumValueID(long datatypeDefID, String value)throws Exception {long enumValueID = -1L;// Let the callers catch ClassCastExceptionEnumDefinition enumDef =(EnumDefinition)this.getDatatypeDefinition(datatypeDefID);List<EnumValue> enumValues = enumDef.getEnumValues();for(EnumValue enumValue : enumValues) {if(value.equalsIgnoreCase(enumValue.getValue())) {enumValueID = enumValue.getID();break;}}return enumValueID;}/*** @return the categories* @throws Exception*/@SuppressWarnings("unchecked")public Map<Long, Category> getCategories() throws Exception {// De-serializeif(this.categories == null) {String dbFile = MM.DEFINITIONS_DB_PATH + "categories" + ".ser";this.categories = (Map<Long, Category>) DBUtils.read(dbFile);}return this.categories;}/**** @param categoryID* @return Category* @throws Exception*/public Category getCategory(long categoryID) throws Exception {// Initializeif(this.categories == null) {this.getCategories();}return this.categories.get(new Long(categoryID));}/**** @param categoryID* @return ExpandedCategory* @throws Exception*/public ExpandedCategory getExpandedCategory(long categoryID)throws Exception {Category category = this.getCategory(categoryID);ExpandedCategory expCategory = new ExpandedCategory(category);return expCategory;}/**** @param categoryID* @return List<Category>* @throws Exception*/public List<Category> getChildrenCategories(long categoryID)throws Exception {// Initializeif(this.categories == null) {this.getCategories();}return this.categories.get(new Long(categoryID)).getChildrenCategory();}/**** @param categoryID* @return List<CategorySlideDefinition>* @throws Exception*/public List<CategorySlideDefinition> getCategorySlideDefinitions(long categoryID) throws Exception {Category category = this.getCategory(categoryID);return category.getCategorySlideDefintions();}/*** @return the slideDefinitions* @throws Exception*/@SuppressWarnings("unchecked")public Map<Long, SlideDefinition> getSlideDefinitions() throws Exception {// De-serializeif(this.slideDefinitions == null) {String dbFile = MM.DEFINITIONS_DB_PATH + "slidedefinitions" +".ser";this.slideDefinitions =(Map<Long, SlideDefinition>) DBUtils.read(dbFile);}return this.slideDefinitions;}/**** @param id* @return SlideDefinition* @throws Exception*/public SlideDefinition getSlideDefinition(long id) throws Exception {// Initializeif(this.slideDefinitions == null) {this.getSlideDefinitions();}return this.slideDefinitions.get(new Long(id));}/**** @param label* @return List<SlideDefinition>* @throws Exception*/public List<SlideDefinition> getSlideDefinitions(long categoryID,String label) throws Exception {// RE-VISIT// May be we need a new data structure, category id to slide definitions// for nowList<SlideDefinition> matchingSlides = new ArrayList<SlideDefinition>();List<CategorySlideDefinition> csDefs = this.getCategorySlideDefinitions(categoryID);for(CategorySlideDefinition csDef : csDefs) {SlideDefinition sDef = this.getSlideDefinition(csDef.getSlideDefintionID());if(sDef.getLabel().equalsIgnoreCase(label)) {matchingSlides.add(sDef);}}return matchingSlides;}/**** @param categoryID* @return* @throws Exception*/public List<SlideDefinition> getSlideDefinitions(long categoryID)throws Exception {// RE-VISIT// May be we need a new data structure, category id to slide definitions// for nowList<SlideDefinition> matchingSlides = new ArrayList<SlideDefinition>();List<CategorySlideDefinition> csDefs = this.getCategorySlideDefinitions(categoryID);for(CategorySlideDefinition csDef : csDefs) {SlideDefinition sDef = this.getSlideDefinition(csDef.getSlideDefintionID());matchingSlides.add(sDef);}return matchingSlides;}/**** @param categoryID* @param EditorialImportance imp* @return List<SlideDefinition>* @throws Exception*/public List<SlideDefinition> getSlides(long categoryID,EditorialImportance imp)throws Exception {List<CategorySlideDefinition> catSlideDefs =this.getCategorySlideDefinitions(categoryID);Iterator<CategorySlideDefinition> itCatSlideDefs =catSlideDefs.iterator();List<SlideDefinition> slideDefs = new ArrayList<SlideDefinition>();while(itCatSlideDefs.hasNext()) {CategorySlideDefinition catSlideDef = itCatSlideDefs.next();if(catSlideDef.getEditorialImportance() == imp) {long slideDefID = catSlideDef.getSlideDefintionID();slideDefs.add(this.getSlideDefinition(slideDefID));}}return slideDefs;}/**** @return Map<Long, FeatureDefinition>* @throws Exception*/@SuppressWarnings("unchecked")public Map<Long, FeatureDefinition> getFeatureDefinitions()throws Exception {// De-serializeif(this.featureDefinitions == null) {String dbFile = MM.DEFINITIONS_DB_PATH + "featuredefinitions" +".ser";this.featureDefinitions =(Map<Long, FeatureDefinition>) DBUtils.read(dbFile);}return this.featureDefinitions;}/**** @param slideID* @return List<FeatureDefinition>* @throws Exception*/public List<FeatureDefinition> getFeatureDefinitions(long slideID)throws Exception {List<FeatureDefinition> featureDefs =new ArrayList<FeatureDefinition>();SlideDefinition slideDef = this.getSlideDefinition(slideID);List<SlideFeatureDefinition> slideFeatureDefs =slideDef.getSlideFeatureDefinitions();for(int i=0; i<slideFeatureDefs.size(); i++) {featureDefs.add(this.getFeatureDefinition(slideFeatureDefs.get(i).getFeatureDefintionID()));}return featureDefs;}/**** @param slideID* @param imp* @return List<FeatureDefinition>* @throws Exception*/public List<FeatureDefinition> getFeatureDefinitions(long slideID,EditorialImportance imp) throws Exception {List<FeatureDefinition> featureDefs =new ArrayList<FeatureDefinition>();SlideDefinition slideDef = this.getSlideDefinition(slideID);List<SlideFeatureDefinition> slideFeatureDefs =slideDef.getSlideFeatureDefinitions();for(SlideFeatureDefinition slideFeatureDef : slideFeatureDefs) {if(slideFeatureDef.getEditorialImportance() == imp) {featureDefs.add(this.getFeatureDefinition(slideFeatureDef.getFeatureDefintionID()));}}return featureDefs;}/**** @param id* @return FeatureDefinition* @throws Exception*/public FeatureDefinition getFeatureDefinition(long id) throws Exception {// Initializeif(this.featureDefinitions == null) {this.getFeatureDefinitions();}return this.featureDefinitions.get(new Long(id));}/**** @param slideID* @param featureLabel* @return FeatureDefinition* @throws Exception*/public FeatureDefinition getFeatureDefinition(long slideID,String featureLabel) throws Exception {FeatureDefinition featureDef = null;SlideDefinition slideDef = this.getSlideDefinition(slideID);for(SlideFeatureDefinition slideFeatureDef :slideDef.getSlideFeatureDefinitions()) {long featureDefID = slideFeatureDef.getFeatureDefintionID();FeatureDefinition thisFeatureDef = this.getFeatureDefinition(featureDefID);if(featureLabel.equalsIgnoreCase(thisFeatureDef.getLabel())) {featureDef = thisFeatureDef;}}return featureDef;}/*** @return the enumValues* @throws Exception*/@SuppressWarnings("unchecked")public Map<Long, EnumValue> getEnumValues() throws Exception {// De-serialiseif(this.enumValues == null) {String dbFile = MM.DEFINITIONS_DB_PATH + "enumvalues" +".ser";this.enumValues =(Map<Long, EnumValue>) DBUtils.read(dbFile);}return this.enumValues;}/**** @param enumValueID* @return EnumValue* @throws Exception*/public EnumValue getEnumValue(long enumValueID) throws Exception {// Initialiseif(this.enumValues == null) {this.getEnumValues();}return this.enumValues.get(new Long(enumValueID));}}