/** 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.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.Link; import it.eng.spagobi.studio.geo.editors.model.geo.LinkParam; import java.util.Vector; public class LinkBO { public static Link setNewLink(GEODocument geoDocument, String hierarchy, String level) { DatamartProvider dmProvider = geoDocument.getDatamartProvider(); CrossNavigation crossNavigation = dmProvider.getCrossNavigation(); Vector<Link> links = null; Link link = new Link(); if (crossNavigation != null) { links = crossNavigation.getLinks(); if(links == null){ links = new Vector<Link>(); crossNavigation.setLinks(links); } }else{ crossNavigation = new CrossNavigation(); links = new Vector<Link>(); crossNavigation.setLinks(links); dmProvider.setCrossNavigation(crossNavigation); } link.setHierarchy(hierarchy); link.setLevel(level); links.add(link); return link; } public static void updateExisting(GEODocument geoDocument, Integer idLink, String levelName) { DatamartProvider dmProvider = geoDocument.getDatamartProvider(); CrossNavigation crossNavigation = dmProvider.getCrossNavigation(); if(idLink!=null){ if (crossNavigation != null) { Vector<Link> links = crossNavigation.getLinks(); if(links!=null){ for (int i = 0; i < links.size(); i++) { Link linkI = links.elementAt(i); if(linkI.getId().equals(idLink)){ linkI.setLevel(levelName); } } } } } } public static Link addParamToLink(GEODocument geoDocument, Link link, LinkParam param) { DatamartProvider dmProvider = geoDocument.getDatamartProvider(); CrossNavigation crossNavigation = dmProvider.getCrossNavigation(); Vector<Link> links = crossNavigation.getLinks(); Vector<LinkParam> params = link.getParam(); if(params == null){ params = new Vector<LinkParam>(); link.setParam(params); } params.add(param); return link; } public static LinkParam getLinkParam(Link link, LinkParam param) { Vector<LinkParam> params = link.getParam(); if(params != null){ params = new Vector<LinkParam>(); if(params.contains(param)){ return param; } } return null; } public static void deleteLinkParam(Link link, String paramName) { Vector<LinkParam> params = link.getParam(); if(params != null){ for(int i=0; i<params.size(); i++){ LinkParam param = params.elementAt(i); if(param.getName()!= null && param.getName().equals(paramName)){ params.remove(param); } } } } public static Link getLinkByHierarchyAndLevel(GEODocument geoDocument, Integer idLink) { Link link = null; DatamartProvider dmProvider = geoDocument.getDatamartProvider(); CrossNavigation crossNavigation = dmProvider.getCrossNavigation(); if(idLink!=null){ if (crossNavigation != null) { Vector<Link> links = crossNavigation.getLinks(); if(links!=null){ for (int i = 0; i < links.size(); i++) { Link linkI = links.elementAt(i); // if (hierarchyName != null && levelName != null // && linkI.getHierarchy().equals(hierarchyName) // && linkI.getLevel().equals(levelName)) { if(linkI.getId().equals(idLink)){ link = linkI; } } } } } return link; } public static void deleteLink(GEODocument geoDocument, String hierarchyName, String levelName){ DatamartProvider dmProvider = geoDocument.getDatamartProvider(); CrossNavigation crossNavigation = dmProvider.getCrossNavigation(); if (crossNavigation != null) { Vector<Link> links = crossNavigation.getLinks(); for (int i = 0; i < links.size(); i++) { Link linkI = links.elementAt(i); if (hierarchyName != null && levelName != null && linkI.getHierarchy().equals(hierarchyName) && linkI.getLevel().equals(levelName)) { links.remove(linkI); } } } } }