/** SpagoBI, the Open Source Business Intelligence suite Copyright (C) 2012 Engineering Ingegneria Informatica S.p.A. - SpagoBI Competency Center This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. **/ package it.eng.spagobi.studio.documentcomposition.editors.model.documentcomposition.metadata; import it.eng.spagobi.studio.utils.util.SpagoBIStudioConstants; import java.util.Iterator; import java.util.Vector; import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.CoreException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class MetadataDocumentComposition { boolean madeWithStudio=false; String madeWithStudioDate; private static Logger logger = LoggerFactory.getLogger(MetadataDocumentComposition.class); public MetadataDocumentComposition(IFile newFile) { madeWithStudio=calculateIfMadeWithStudio(newFile); /* if(Activator.getDefault().getMetadataDocumentComposition() != null){ metadataDocuments = Activator.getDefault().getMetadataDocumentComposition().getMetadataDocuments(); }*/ } private Vector<MetadataDocument> metadataDocuments=new Vector<MetadataDocument>(); public Vector<MetadataDocument> getMetadataDocuments() { return metadataDocuments; } public void setMetadataDocuments(Vector<MetadataDocument> metadataDocuments) { this.metadataDocuments = metadataDocuments; } public boolean substituteMetadataDocument(MetadataDocument metadataDocument){ logger.debug("IN"); boolean found = false; for (int i = 0; i < metadataDocuments.size(); i++) { MetadataDocument iterMetaDocument = metadataDocuments.get(i); if(iterMetaDocument.getLabel().equals(metadataDocument.getLabel())){ metadataDocuments.set(i, null); metadataDocuments.set(i, metadataDocument); found = true; } } logger.debug("OUT"); return found; } public MetadataDocument findMetadataDocument(String label){ logger.debug("IN"); MetadataDocument toReturn = null; for (int i = 0; i < metadataDocuments.size(); i++) { MetadataDocument iterMetaDocument = metadataDocuments.get(i); if(iterMetaDocument.getLabel().equals(label)){ toReturn = iterMetaDocument; } } logger.debug("OUT"); return toReturn; } public boolean removeMetadataDocumentByLabel(MetadataDocument _metadataDocument){ boolean found=false; for (Iterator iterator = metadataDocuments.iterator(); iterator.hasNext() && found==false;) { MetadataDocument metaDocument = (MetadataDocument) iterator.next(); if(metaDocument.getLabel().equals(_metadataDocument.getLabel())){ metadataDocuments.remove(metaDocument); found=true; } } return found; } public boolean removeMetadataDocument(MetadataDocument _metadataDocument){ boolean found=false; for (Iterator iterator = metadataDocuments.iterator(); iterator.hasNext() && found==false;) { MetadataDocument metaDocument = (MetadataDocument) iterator.next(); if(metaDocument.getLabel().equals(_metadataDocument.getLabel())){ metadataDocuments.remove(metaDocument); found=true; } } return found; } public void addMetadataDocument(MetadataDocument _metadataDocument){ logger.debug("IN"); if(findMetadataDocument(_metadataDocument.getLabel())!= null){ this.substituteMetadataDocument(_metadataDocument); } else{ metadataDocuments.add(_metadataDocument); } logger.debug("OUT"); } public boolean isMadeWithStudio(){ return madeWithStudio; } public boolean calculateIfMadeWithStudio(IFile newFile) { String date=null; try { date=newFile.getPersistentProperty(SpagoBIStudioConstants.MADE_WITH_STUDIO); } catch (CoreException e) { logger.error("Could not retrieve metadata", e); e.printStackTrace(); } if(date==null)madeWithStudio=false; else{ madeWithStudioDate=date; madeWithStudio=true; } return madeWithStudio; } public void setMadeWithStudio(boolean madeWithStudio) { this.madeWithStudio = madeWithStudio; } /** taking in input a label return the relative metadataDOcument * * @param _metadataDocument * @return */ public MetadataDocument retrieveMetadataDocumentByLabel(String label){ MetadataDocument toReturn = null; for (Iterator iterator = metadataDocuments.iterator(); iterator.hasNext() && toReturn == null;) { MetadataDocument metaDocument = (MetadataDocument) iterator.next(); if(metaDocument.getLabel().equals(label)){ toReturn = metaDocument; } } return toReturn; } }