/** 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.geo.editors.model.bo; import it.eng.spagobi.studio.geo.Activator; import it.eng.spagobi.studio.geo.editors.model.geo.Column; import it.eng.spagobi.studio.geo.editors.model.geo.CrossNavigation; import it.eng.spagobi.studio.geo.editors.model.geo.DatamartProvider; import it.eng.spagobi.studio.geo.editors.model.geo.GEODocument; import it.eng.spagobi.studio.geo.editors.model.geo.Label; import it.eng.spagobi.studio.geo.editors.model.geo.Labels; import it.eng.spagobi.studio.geo.editors.model.geo.Layer; import it.eng.spagobi.studio.geo.editors.model.geo.Layers; import it.eng.spagobi.studio.geo.editors.model.geo.Link; import it.eng.spagobi.studio.geo.editors.model.geo.MapProvider; import it.eng.spagobi.studio.geo.editors.model.geo.MapRenderer; import it.eng.spagobi.studio.geo.editors.model.geo.Metadata; import it.eng.spagobi.studio.geo.util.XmlTemplateGenerator; import java.util.Iterator; import java.util.Locale; import java.util.ResourceBundle; import java.util.Vector; import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.CoreException; public class ModelBO { private ResourceBundle rb = ResourceBundle.getBundle("config", Locale.ENGLISH); public GEODocument createModel(IFile file) throws CoreException{ GEODocument geoDocument = XmlTemplateGenerator.readXml(file); if(geoDocument.getMapProvider()==null){ MapProvider mapProvider =new MapProvider(); geoDocument.setMapProvider(mapProvider); mapProvider.setClassName(rb.getString("mapprovider.class.name")); } if(geoDocument.getDatamartProvider()==null){ DatamartProvider datamartProvider = new DatamartProvider(); geoDocument.setDatamartProvider(datamartProvider); datamartProvider.setClassName(rb.getString("datamartprovider.class.name")); } if(geoDocument.getMapRenderer()==null){ MapRenderer mapRenderer= new MapRenderer(); geoDocument.setMapRenderer(mapRenderer); mapRenderer.setClassName(rb.getString("maprenderer.class.name")); } //put id to links if(geoDocument.getDatamartProvider()!=null && geoDocument.getDatamartProvider().getCrossNavigation()!=null && geoDocument.getDatamartProvider().getCrossNavigation().getLinks()!=null){ Vector<Link> links=geoDocument.getDatamartProvider().getCrossNavigation().getLinks(); for (Iterator iterator = links.iterator(); iterator.hasNext();) { Link link = (Link) iterator.next(); link.setId(CrossNavigation.idLink++); } } return geoDocument; } public void cleanGEODocument(GEODocument geoDocumentToSaveOnFile){ DatamartProvider dmProvider = geoDocumentToSaveOnFile.getDatamartProvider(); Metadata metadata = dmProvider.getMetadata(); if(metadata != null){ Vector<Column> colToRemove= new Vector<Column>(); Vector<Column> columns = metadata.getColumn(); if(columns != null){ for(int j=0; j<columns.size(); j++){ Column col = columns.elementAt(j); if(!col.isChoosenForTemplate()){ colToRemove.add(col); }else if(col.isChoosenForTemplate() && (col.getType()== null || col.getType().equals(""))){ colToRemove.add(col); } } columns.removeAll(colToRemove); } } MapRenderer mapRenderer = geoDocumentToSaveOnFile.getMapRenderer(); Layers layers = mapRenderer.getLayers(); if(layers != null){ Vector<Layer> layToRemove= new Vector<Layer>(); Vector<Layer> layerVect = layers.getLayer(); if(layerVect != null){ for(int j=0; j<layerVect.size(); j++){ Layer layer = layerVect.elementAt(j); if(!layer.isChoosenForTemplate()){ //layerVect.remove(layer); layToRemove.add(layer); } } // System.out.println(layToRemove.size()); layerVect.removeAll(layToRemove); // System.out.println("layers left on doc :"+layerVect.size()); } } //clean and rebiuld labels Labels labels = mapRenderer.getGuiSettings().getLabels(); if(labels != null){ Vector<Label> labelVect = labels.getLabel(); if(labelVect != null){ Vector<Label> labelsToRemove= new Vector<Label>(); for(int i = 0; i<labelVect.size(); i++){ Label label = labelVect.elementAt(i); if(label.getPosition() == null || label.getPosition().equalsIgnoreCase("")){ labelsToRemove.add(label); }else{ //set className String className=rb.getString("label.class.name"); label.setClassName(className); } } labelVect.removeAll(labelsToRemove); } } } public void saveModel(GEODocument geoDocument){ Activator.getDefault().setGeoDocument(geoDocument); } public GEODocument getModel(){ return Activator.getDefault().getGeoDocument(); } }