/**
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.DatamartProvider;
import it.eng.spagobi.studio.geo.editors.model.geo.GEODocument;
import it.eng.spagobi.studio.geo.editors.model.geo.Hierarchies;
import it.eng.spagobi.studio.geo.editors.model.geo.Hierarchy;
import it.eng.spagobi.studio.geo.editors.model.geo.Level;
import java.util.Vector;
public class LevelBO {
public static void setNewLevel(GEODocument geoDocument,
String hierarchyName, Level newLevel) {
DatamartProvider dmProvider = geoDocument.getDatamartProvider();
if (dmProvider != null) {
Hierarchies hierarchies = dmProvider.getHierarchies();
Vector<Hierarchy> vectHier = null;
if (hierarchies != null) {
vectHier = hierarchies.getHierarchy();
if (vectHier != null) {
for (int i = 0; i < vectHier.size(); i++) {
if (vectHier.elementAt(i).getName().equals(
hierarchyName)) {
Vector<Level> vectLevels = null;
if (vectHier.elementAt(i).getLevels() == null) {
vectLevels = new Vector<Level>();
vectHier.elementAt(i).setLevels(vectLevels);
}
else{
vectLevels=vectHier.elementAt(i).getLevels();
}
vectLevels.add(newLevel);
}
}
}
}
}
}
public static void deleteLevel(GEODocument geoDocument,
String hierarchyName, String toDeleteLevel) {
DatamartProvider dmProvider = geoDocument.getDatamartProvider();
if (dmProvider != null) {
Hierarchies hierarchies = dmProvider.getHierarchies();
Vector<Hierarchy> vectHier = null;
if (hierarchies != null) {
vectHier = hierarchies.getHierarchy();
if (vectHier != null) {
for (int i = 0; i < vectHier.size(); i++) {
if (vectHier.elementAt(i).getName().equals(
hierarchyName)) {
Vector<Level> vectLevels = null;
if (vectHier.elementAt(i).getLevels() != null && vectHier.elementAt(i).getLevels() != null) {
Vector<Level> vectLevelsToRemove = new Vector<Level>();
for(int j=0; j<vectHier.elementAt(i).getLevels().size(); j++){
Level l = vectHier.elementAt(i).getLevels().elementAt(j);
if(l.getName().equals(toDeleteLevel)){
//vectHier.elementAt(i).getLevels().getLevel().remove(l);
vectLevelsToRemove.add(l);
}
}
vectHier.elementAt(i).getLevels().removeAll(vectLevelsToRemove);
}
}
}
}
}
}
}
public static Level getLevelByName(GEODocument geoDocument,
String hierarchyName, String level) {
Level levelret = null;
DatamartProvider dmProvider = geoDocument.getDatamartProvider();
if (dmProvider != null) {
Hierarchies hierarchies = dmProvider.getHierarchies();
Vector<Hierarchy> vectHier = null;
if (hierarchies != null) {
vectHier = hierarchies.getHierarchy();
if (vectHier != null) {
for (int i = 0; i < vectHier.size(); i++) {
Hierarchy hier = vectHier.elementAt(i);
if (hier.getName().equals( hierarchyName)) {
if (hier.getLevels() != null && hier.getLevels() != null) {
for(int j=0; j<vectHier.elementAt(i).getLevels().size(); j++){
Level l = hier.getLevels().elementAt(j);
if(l.getName().equals(level)){
levelret = l;
}
}
}
}
}
}
}
}
return levelret;
}
public static Vector<Level> getLevelsByHierarchyName(GEODocument geoDocument,
String hierarchyName){
DatamartProvider dmProvider = geoDocument.getDatamartProvider();
if (dmProvider != null) {
Hierarchies hierarchies = dmProvider.getHierarchies();
Vector<Hierarchy> vectHier = null;
if (hierarchies != null) {
vectHier = hierarchies.getHierarchy();
if (vectHier != null) {
for (int i = 0; i < vectHier.size(); i++) {
Hierarchy hier = vectHier.elementAt(i);
if (hier.getName().equals( hierarchyName)) {
return hier.getLevels();
}
}
}
}
}
return null;
}
public static void updateLevel(GEODocument geoDocument,
String hierarchyName, Level oldLevel, Level newLevel){
Level levelToUpdate = getLevelByName(geoDocument, hierarchyName, oldLevel.getName());
if(levelToUpdate != null){
levelToUpdate.setName(newLevel.getName());
levelToUpdate.setColumnDesc(newLevel.getColumnDesc());
levelToUpdate.setColumnId(newLevel.getColumnId());
levelToUpdate.setFeatureName(newLevel.getFeatureName());
}
}
}