/**
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.bo;
import it.eng.spagobi.studio.documentcomposition.editors.model.documentcomposition.Document;
import it.eng.spagobi.studio.documentcomposition.editors.model.documentcomposition.DocumentComposition;
import it.eng.spagobi.studio.documentcomposition.editors.model.documentcomposition.DocumentsConfiguration;
import it.eng.spagobi.studio.documentcomposition.editors.model.documentcomposition.Parameter;
import it.eng.spagobi.studio.documentcomposition.editors.model.documentcomposition.Parameters;
import it.eng.spagobi.studio.documentcomposition.editors.model.documentcomposition.Refresh;
import it.eng.spagobi.studio.documentcomposition.editors.model.documentcomposition.RefreshDocLinked;
import java.util.Iterator;
import java.util.Vector;
public class ParameterBO {
public String getLastId(DocumentComposition docComp){
int counter=0;
DocumentsConfiguration docConf = docComp.getDocumentsConfiguration();
if(docConf != null){
Vector documents = docConf.getDocuments();
if(documents != null){
for (int i = 0; i< documents.size(); i++){
Document doc = (Document)documents.elementAt(i);
String docLabel =doc.getSbiObjLabel();
Parameters parameters = doc.getParameters();
if(parameters != null){
Vector<Parameter> params = parameters.getParameter();
if(params != null){
for(int j=0;j<params.size(); j++){
Parameter param = params.elementAt(j);
int last =Integer.valueOf(param.getId()).intValue();
if(last > counter){
counter = last;
}
}
}
}
}
}
}
return String.valueOf(counter);
}
public Parameter getParameterById(String id , Vector<Parameter> parameters){
Parameter paramFound = null;
for(int i=0; i<parameters.size(); i++){
Parameter param = parameters.elementAt(i);
if(param.getId().equals(id)){
paramFound = param;
}
}
return paramFound;
}
// No more used, TODO CAncel
public void cleanUnusedInputParameters(DocumentComposition docComp, Vector<String> idParamUsedByRefresh){
DocumentsConfiguration docConf = docComp.getDocumentsConfiguration();
if(docConf != null){
Vector documents = docConf.getDocuments();
if(documents != null){
for (int i = 0; i< documents.size(); i++){
Document doc = (Document)documents.elementAt(i);
String docLabel =doc.getSbiObjLabel();
Parameters parameters = doc.getParameters();
if(parameters != null){
Vector<Parameter> params = parameters.getParameter();
if(params != null){
for(int j=0;j<params.size(); j++){
Parameter param = params.elementAt(j);
if(param.getType().equalsIgnoreCase("IN") && !idParamUsedByRefresh.contains(param.getId())){
params.remove(param);
}
}
}
}
}
}
}
}
public Parameter getParameterById(DocumentComposition docComp, String id){
Parameter paramFound = null;
DocumentsConfiguration docConf = docComp.getDocumentsConfiguration();
if(docConf != null){
Vector documents = docConf.getDocuments();
if(documents != null){
for (int i = 0; i< documents.size(); i++){
Document doc = (Document)documents.elementAt(i);
String docLabel =doc.getSbiObjLabel();
Parameters parameters = doc.getParameters();
if(parameters != null){
Vector<Parameter> params = parameters.getParameter();
if(params != null){
for(int j=0;j<params.size(); j++){
Parameter param = params.elementAt(j);
if(param.getType().equals("IN") && param.getId().equals(id)){
paramFound = param;
}
}
}
}
}
}
}
return paramFound;
}
public String getParameterDocumentName(DocumentComposition docComp, String id){
String docName = null;
DocumentsConfiguration docConf = docComp.getDocumentsConfiguration();
if(docConf != null){
Vector documents = docConf.getDocuments();
if(documents != null){
for (int i = 0; i< documents.size(); i++){
Document doc = (Document)documents.elementAt(i);
String docLabel =doc.getSbiObjLabel();
Parameters parameters = doc.getParameters();
if(parameters != null){
Vector<Parameter> params = parameters.getParameter();
if(params != null){
for(int j=0;j<params.size(); j++){
Parameter param = params.elementAt(j);
if(param.getType().equals("IN") && param.getId().equals(id)){
docName = docLabel;
}
}
}
}
}
}
}
return docName;
}
public boolean deleteParameterById(DocumentComposition docComp, String id){
boolean paramFound = false;
DocumentsConfiguration docConf = docComp.getDocumentsConfiguration();
if(docConf != null){
Vector documents = docConf.getDocuments();
if(documents != null){
for (int i = 0; i< documents.size(); i++){
Document doc = (Document)documents.elementAt(i);
String docLabel =doc.getSbiObjLabel();
Parameters parameters = doc.getParameters();
if(parameters != null){
Vector<Parameter> params = parameters.getParameter();
if(params != null){
for(int j=0;j<params.size(); j++){
Parameter param = params.elementAt(j);
if(param.getType().equals("IN") && param.getId().equals(id)){
params.remove(param);
}
}
}
}
}
}
}
return paramFound;
}
public Parameter getDocOutputParameter(Vector<Parameter> parameters, String paramLabel){
Parameter paramFound = null;
if(parameters != null){
for(int i=0; i<parameters.size(); i++){
Parameter param = parameters.elementAt(i);
if(paramLabel != null){
if(param.getType().equals("OUT") && paramLabel.equals(param.getSbiParLabel())){
paramFound = param;
}
}
}
}
return paramFound;
}
public boolean outputParameterExists(DocumentComposition docComp, String masterDocLabel, String masterParamLabel){
boolean ret = false;
DocumentsConfiguration docConf = docComp.getDocumentsConfiguration();
if(docConf != null){
Vector documents = docConf.getDocuments();
if(documents != null){
for (int i = 0; i< documents.size(); i++){
Document doc = (Document)documents.elementAt(i);
String docLabel =doc.getSbiObjLabel();
if(masterDocLabel.equals(docLabel)){
Parameters parameters = doc.getParameters();
if(parameters != null){
Vector<Parameter> params = parameters.getParameter();
if(params != null){
for(int j=0;j<params.size(); j++){
Parameter param = params.elementAt(j);
if(param.getType().equals("OUT") && param.getSbiParLabel().equals(masterParamLabel)){
ret = true;
}
}
}
}
}
}
}
}
return ret;
}
public Parameter getDocInputParameterByLabel(Vector<Parameter> parameters, String label){
Parameter paramFound = null;
if(parameters != null){
for(int i=0; i<parameters.size(); i++){
Parameter param = parameters.elementAt(i);
if(param.getType().equals("IN") && param.getSbiParLabel().equals(label)){
paramFound = param;
}
}
}
return paramFound;
}
/** method used to see if a parameter is already present in input destination parameters TODO: cancel
*
* @param docComp
* @param destinDocLabel
* @param destinParamLabel
* @return
*/
public boolean inputParameterExists(DocumentComposition docComp, String destinDocLabel, String destinParamLabel){
boolean ret = false;
DocumentsConfiguration docConf = docComp.getDocumentsConfiguration();
if(docConf != null){
Vector documents = docConf.getDocuments();
if(documents != null){
for (int i = 0; i< documents.size(); i++){
Document doc = (Document)documents.elementAt(i);
String docLabel =doc.getSbiObjLabel();
if(destinDocLabel.equals(docLabel)){
Parameters parameters = doc.getParameters();
if(parameters != null){
Vector<Parameter> params = parameters.getParameter();
if(params != null){
for(int j=0;j<params.size(); j++){
Parameter param = params.elementAt(j);
if(param.getType().equals("IN") && param.getSbiParLabel().equals(destinParamLabel)){
ret = true;
}
}
}
}
}
}
}
}
return ret;
}
public Parameter getInputParameterByDocumentLabelAndParameterLabel(DocumentComposition docComp, String documentLabel, String parameterLabel){
DocumentsConfiguration docConf = docComp.getDocumentsConfiguration();
Parameter toReturn = null;
if(docConf != null){
Document document = docConf.getDocumentByLabel(documentLabel);
Vector<Parameter> parameters = document.getParameters().getParameter();
if(parameters != null){
for (Iterator iterator = parameters.iterator(); iterator.hasNext() && toReturn == null;) {
Parameter parameter = (Parameter) iterator.next();
if(parameter.getType().equalsIgnoreCase("IN") && parameter.getSbiParLabel().equals(parameterLabel)){
toReturn = parameter;
}
}
}
}
return toReturn;
}
/** Returns navigation name if the parameter is used in a navigation
*
* @return
*/
public String isParameterUsedInNavigation(DocumentComposition docComposition, String inputId){
String used = null;
DocumentsConfiguration documentsConfiguration = docComposition.getDocumentsConfiguration();
Vector<Document> documents = documentsConfiguration.getDocuments();
for (Iterator iterator = documents.iterator(); iterator.hasNext() && used == null;) {
Document document = (Document) iterator.next();
Parameters pars = document.getParameters();
Vector<Parameter> parameters = pars.getParameter();
if(parameters != null){
for (Iterator iterator2 = parameters.iterator(); iterator2.hasNext() && used == null;) {
Parameter parameter2 = (Parameter) iterator2.next();
if(parameter2.getType().equalsIgnoreCase("OUT")){
Refresh refresh = parameter2.getRefresh();
Vector<RefreshDocLinked> docsLinked = refresh.getRefreshDocLinked();
for (Iterator iterator3 = docsLinked.iterator(); iterator3.hasNext() && used == null;) {
RefreshDocLinked refreshDocLinked = (RefreshDocLinked) iterator3.next();
if( refreshDocLinked.getIdParam().equals(inputId)){
used = "document's "+ refreshDocLinked.getLabelDoc()+" parameter "+refreshDocLinked.getLabelParam()+" is used as input parameter for a navigation";
}
}
}
}
}
}
return used;
}
}