Package it.eng.spagobi.behaviouralmodel.lov.bo

Examples of it.eng.spagobi.behaviouralmodel.lov.bo.ILovDetail


      Parameter par = pardao.loadForExecutionByParameterIDandRoleName(parId, roleToBeUsed);
      ModalitiesValue modVal = par.getModalityValue();
      // get the lov provider
      String looProvider = modVal.getLovProvider();
      // get from the request the type of lov
      ILovDetail lovDetail = LovDetailFactory.getLovFromXML(looProvider);
      IEngUserProfile profile = GeneralUtilities.createNewUserProfile(userIndentifierToBeUsed);
      String result = lovDetail.getLovResult(profile, null, null);
      SourceBean rowsSourceBean = SourceBean.fromXMLString(result);
      List rows = null;
      if(rowsSourceBean != null) {
        rows = rowsSourceBean.getAttributeAsList(DataRow.ROW_TAG);
        if (rows != null && rows.size() != 0) {
          Iterator it = rows.iterator();
          while(it.hasNext()) {
            SourceBean row = (SourceBean) it.next();
            Object value = row.getAttribute(lovDetail.getValueColumnName());
            if (value != null) {
              toReturn.add(value.toString());
            }
          }
        }
View Full Code Here


  private void testLovAfterAttributesFilling(SourceBean request,   SourceBean response) throws EMFUserError, SourceBeanException  {
    try {
      ModalitiesValue modVal = null;
      modVal = (ModalitiesValue) session.getAttribute(SpagoBIConstants.MODALITY_VALUE_OBJECT);
      String lovProv = modVal.getLovProvider();
        ILovDetail lovDet = LovDetailFactory.getLovFromXML(lovProv);
      List profAttrToFill = getProfileAttributesToFill(lovDet);
      if(profAttrToFill.size()!=0) {
        //  create a fake user profile
          UserProfile userProfile=new UserProfile((String)((UserProfile)profile).getUserId());
        // copy all the roles, functionalities of the original profile
View Full Code Here

          String descriptionColumn = (String)request.getAttribute("descriptionColumn");
          List visibleColumns = (List)request.getAttributeAsList("visibleColumn");
          List columns = (List)request.getAttributeAsList("column");
         
          String lovProvider = modVal.getLovProvider();
          ILovDetail lovDetail = LovDetailFactory.getLovFromXML(lovProvider);
          lovDetail.setDescriptionColumnName(descriptionColumn);
          List invisCols = getInvisibleColumns(columns, visibleColumns);
          lovDetail.setInvisibleColumnNames(invisCols);
          lovDetail.setValueColumnName(valueColumn);
          lovDetail.setVisibleColumnNames(visibleColumns);
          String newLovProvider = lovDetail.toXML();
          modVal.setLovProvider(newLovProvider);
         
          session.delAttribute(SpagoBIConstants.MODALITY_VALUE_OBJECT);
          session.delAttribute(SpagoBIConstants.MODALITY);
        }
       
       
        // don't save after the test
        else if ("DO_NOT_SAVE".equalsIgnoreCase(returnFromTestMsg)) {
          modVal = (ModalitiesValue) session.getAttribute(SpagoBIConstants.MODALITY_VALUE_OBJECT);
          //session.delAttribute(SpagoBIConstants.MODALITY_VALUE_OBJECT);
          //session.delAttribute(SpagoBIConstants.MODALITY);
          prepareDetailModalitiesValuePage(modVal, mod, response);
          // exits without writing into DB and without loop
          return;
        }
      }
      // if we are not coming from the test result page, the Lov objects fields are in request
      else {
        String idStr = (String) request.getAttribute("id");
        Integer id = new Integer(idStr);
        String description = (String) request.getAttribute("description");
        String name = (String) request.getAttribute("name");
        String label = (String) request.getAttribute("label");
        String input_type = (String) request.getAttribute("input_type");
        String input_type_cd = input_type.substring(0, input_type.indexOf(","));
        String input_type_id = input_type.substring(input_type.indexOf(",") + 1);
        if(mod.equalsIgnoreCase(AdmintoolsConstants.DETAIL_INS)) {
          modVal.setId(id);
        }
        // check if lov type has been changed and in that case reset the lovprovider
        String oldTypeId = modVal.getITypeId();
        if((oldTypeId!=null) && (!oldTypeId.trim().equals(""))) {
          if(!oldTypeId.equals(input_type_id)) {
            modVal.setLovProvider("");
          }
        }
        // set the properties of the lov object
        modVal.setDescription(description);
        modVal.setName(name);
        modVal.setLabel(label);
        modVal.setITypeCd(input_type_cd);
        modVal.setITypeId(input_type_id);
                // check label and validation
        labelControl(request, mod);
        ValidationCoordinator.validate("PAGE", "ModalitiesValueValidation", this);
        // based on the type of lov set special properties
        Object objectToTest = null;
       
       
        if(input_type_cd.equalsIgnoreCase("QUERY")) {
          String lovProv = modVal.getLovProvider();
          QueryDetail query = null;
          if( (lovProv==null) || (lovProv.trim().equals("")) ) {
            query = new QueryDetail();
          } else {
            query = (QueryDetail)LovDetailFactory.getLovFromXML(lovProv);
          }
          recoverQueryWizardValues(request, query);
          String lovProvider = query.toXML();
          modVal.setLovProvider(lovProvider);
          ValidationCoordinator.validate("PAGE", "QueryWizardValidation", this);
          objectToTest = query;
        }
       
        else if (input_type_cd.equalsIgnoreCase("JAVA_CLASS")) {
          String lovProv = modVal.getLovProvider();
          JavaClassDetail javaClassDet =  null;
          if( (lovProv==null) || (lovProv.trim().equals("")) ) {
            javaClassDet = new JavaClassDetail();
          } else {
            javaClassDet = (JavaClassDetail)LovDetailFactory.getLovFromXML(lovProv);
          }
              recoverJavaClassWizardValues(request, javaClassDet);
          String lovProvider = javaClassDet.toXML();
          modVal.setLovProvider(lovProvider);
          ValidationCoordinator.validate("PAGE", "JavaClassWizardValidation", this);
          objectToTest = javaClassDet;
        }
       
        else if (input_type_cd.equalsIgnoreCase("SCRIPT")) {         
          String lovProv = modVal.getLovProvider();
          ScriptDetail scriptDet =  null;
          if( (lovProv==null) || (lovProv.trim().equals("")) ) {
            scriptDet = new ScriptDetail();
          } else {
            scriptDet = (ScriptDetail)LovDetailFactory.getLovFromXML(lovProv);
          }
          recoverScriptWizardValues(request, scriptDet);
          String lovProvider = scriptDet.toXML();
          modVal.setLovProvider(lovProvider);
          ValidationCoordinator.validate("PAGE", "ScriptWizardValidation", this);
          objectToTest = scriptDet;
        }
       
        else  if (input_type_cd.equalsIgnoreCase("FIX_LOV")) {
          String lovProv = modVal.getLovProvider();
          FixedListDetail fixlistDet = null;
          if( (lovProv==null) || (lovProv.trim().equals("")) ) {
            fixlistDet = new FixedListDetail();
          } else {
            fixlistDet = (FixedListDetail)LovDetailFactory.getLovFromXML(lovProv);
          }
          boolean itemTaskDone = doFixListItemTask(modVal, fixlistDet, request);
          if(itemTaskDone) {
            prepareDetailModalitiesValuePage(modVal, mod, response);
            session.setAttribute(SpagoBIConstants.LOV_MODIFIED, "true");
            session.setAttribute(SpagoBIConstants.MODALITY_VALUE_OBJECT, modVal);
            // exits without writing into DB and without loop
            return;
          } else {
            List items = fixlistDet.getItems();
            if(items.size()==0) {
              modVal.setLovProvider("<LOV/>");
            }
            objectToTest = fixlistDet;
         
        }
        // if there are some validation errors into the errorHandler does not write into DB
        Collection errors = errorHandler.getErrors();
        if (errors != null && errors.size() > 0) {
          Iterator iterator = errors.iterator();
          while (iterator.hasNext()) {
            Object error = iterator.next();
            if (error instanceof EMFValidationError) {
              prepareDetailModalitiesValuePage(modVal, mod, response);
              return;
            }
          }
        }
        // check if user wants to test
        Object test = request.getAttribute("testLovBeforeSave");
        if (test != null) {
          session.setAttribute(SpagoBIConstants.MODALITY, mod);
          session.setAttribute(SpagoBIConstants.MODALITY_VALUE_OBJECT, modVal);
          boolean needProfAttrFill = checkProfileAttributes(response, (ILovDetail)objectToTest);
          if(!needProfAttrFill) {
            response.setAttribute("testLov", "true");
          }
          // exits without writing into DB
          return;
        }
      }
   
     
     
      // finally (if there are no error, if there is no request for test or to
      // add or delete a Fix Lov item) writes into DB
      if(mod.equalsIgnoreCase(AdmintoolsConstants.DETAIL_INS)) {
        IModalitiesValueDAO dao=DAOFactory.getModalitiesValueDAO();
        dao.setUserProfile(profile);
        dao.insertModalitiesValue(modVal);
      } else {
        // looks for dependencies associated to the previous lov
        Integer lovId = modVal.getId();
        ModalitiesValue initialLov = DAOFactory.getModalitiesValueDAO().loadModalitiesValueByID(lovId);
        IObjParuseDAO objParuseDAO = DAOFactory.getObjParuseDAO();
        IParameterUseDAO paruseDAO = DAOFactory.getParameterUseDAO();
        List paruses = paruseDAO.getParameterUsesAssociatedToLov(lovId);
        Iterator parusesIt = paruses.iterator();
        List documents = new ArrayList();
        List correlations = new ArrayList();
        while (parusesIt.hasNext()) {
          ParameterUse aParuse = (ParameterUse) parusesIt.next();
          documents.addAll(objParuseDAO.getDocumentLabelsListWithAssociatedDependencies(aParuse.getUseID()));
          correlations.addAll(objParuseDAO.getAllDependenciesForParameterUse(aParuse.getUseID()));
        }
        // if the document list is not empty means that the lov is in correlation in some documents
        if (documents.size() > 0) {
          if (!initialLov.getITypeCd().equals(modVal.getITypeCd())) {
            // the lov type was changed
            HashMap errparams = new HashMap();
            errparams.put(AdmintoolsConstants.PAGE, "DetailModalitiesValuePage");
            List params = new ArrayList();
            params.add(documents.toString());
            EMFValidationError error = new EMFValidationError(EMFErrorSeverity.ERROR, "input_type", "1058", params, errparams);
            errorHandler.addError(error);
            prepareDetailModalitiesValuePage(modVal, mod, response);
            return;
          } else {
            // the lov type was not changed, must verify that the dependency columns are still present
            // load all the columns returned by the lov
            String queryDetXML = modVal.getLovProvider();
            ILovDetail lovProvDet = LovDetailFactory.getLovFromXML(queryDetXML);
            List visColumns = lovProvDet.getVisibleColumnNames();
            List invisColumns = lovProvDet.getInvisibleColumnNames();
            List columns = new ArrayList();
            if( (visColumns!=null) && (visColumns.size()!=0) )
              columns.addAll(visColumns);
            if( (invisColumns!=null) && (invisColumns.size()!=0) )
              columns.addAll(invisColumns);
View Full Code Here

   */
  public String getLovResult(IEngUserProfile profile, BIObjectParameter parameter,
      ExecutionInstance executionInstance, boolean retrieveIfNotcached) throws Exception {
    logger.debug("IN");
   
    ILovDetail lovDefinition = executionInstance.getLovDetail(parameter);
    List<ObjParuse> dependencies = executionInstance.getDependencies(parameter);
   
    String lovResult = null;
   
    if (lovDefinition instanceof QueryDetail) {
      // queries are cached
      String cacheKey = getCacheKey(profile, lovDefinition, dependencies, executionInstance);
      logger.info("Cache key : " + cacheKey);
      if (cache.contains(cacheKey)) {
        logger.info("Retrieving lov result from cache...");
        // lov provider is present, so read the DATA in cache
        lovResult = cache.get(cacheKey);
        logger.debug(lovResult);
      } else if (retrieveIfNotcached) {
        logger.info("Executing lov to get result ...");
        lovResult = lovDefinition.getLovResult(profile, dependencies, executionInstance);
        logger.debug(lovResult);
        // insert the data in cache
        if (lovResult != null)
          cache.put(cacheKey, lovResult);
      }
    } else {
      // scrips, fixed list and java classes are not cached, and returned without considering retrieveIfNotcached input
      logger.info("Executing lov (NOT QUERY TYPE) to get result ...");
      lovResult = lovDefinition.getLovResult(profile, dependencies, executionInstance);
      logger.debug(lovResult);
    }
   
    logger.debug("OUT");
    return lovResult;
View Full Code Here

     
    }
   
    private String getValueFromLov(BIObjectParameter biObjectParameter, SourceBean lovSB) {
      String value = null;
      ILovDetail lovProvDet = null;
      try {
        Parameter par = biObjectParameter.getParameter();
        ModalitiesValue lov = par.getModalityValue();
        // build the ILovDetail object associated to the lov
        String lovProv = lov.getLovProvider();
        lovProvDet = LovDetailFactory.getLovFromXML(lovProv);
       
        value = (String) lovSB.getAttribute( lovProvDet.getValueColumnName() );
      } catch (Exception e) {
        throw new SpagoBIServiceException(SERVICE_NAME, "Impossible to get parameter's value", e);
      }
     
      return value;
View Full Code Here

      if(par != null) {
        ModalitiesValue paruse = par.getModalityValue();
        if (!paruse.getITypeCd().equals("MAN_IN") && paruse.getSelectionType().equals("COMBOBOX")) {  // load values only if not a lookup           
          try {
            String lovProv = paruse.getLovProvider();
            ILovDetail lovProvDet = LovDetailFactory.getLovFromXML(lovProv);
            LovResultCacheManager executionCacheManager = new LovResultCacheManager();
            String lovResult = executionCacheManager.getLovResult(this.userProfile, aBIObjectParameter, this, true);

            LovResultHandler lovResultHandler = new LovResultHandler(lovResult);
            // if the lov is single value and the parameter value is not set, the parameter value
            // is the lov result
            if(lovResultHandler.isSingleValue() && aBIObjectParameter.getParameterValues() == null) {
              aBIObjectParameter.setParameterValues(lovResultHandler.getValues(lovProvDet.getValueColumnName()));
              aBIObjectParameter.setHasValidValues(true);
              aBIObjectParameter.setTransientParmeters(true);
            }
          } catch (Exception e) {
            logger.error(e);
View Full Code Here

      return new ArrayList();
    }
   
    // get the lov provider detail
    String lovProv = lov.getLovProvider();
    ILovDetail lovProvDet = LovDetailFactory.getLovFromXML(lovProv);
    // get lov result
    String lovResult = null;
    List toReturn = null;
    if (lovProvDet instanceof QueryDetail) {
      toReturn = getValidationErrorsOnValuesForQueries((QueryDetail) lovProvDet, biparam);
View Full Code Here

  public ILovDetail getLovDetail(BIObjectParameter parameter) {
    Parameter par = parameter.getParameter();
    ModalitiesValue lov = par.getModalityValue();
    // build the ILovDetail object associated to the lov
    String lovProv = lov.getLovProvider();
    ILovDetail lovProvDet = null;
    try {
      lovProvDet = LovDetailFactory.getLovFromXML(lovProv);
    } catch (Exception e) {
      throw new SpagoBIRuntimeException("Impossible to get lov detail associated to input BIObjectParameter", e);
    }
View Full Code Here

    String valueColumn;
    String displayColumn;
    String descriptionColumn;
    List rows;
    List<ObjParuse> biParameterExecDependencies;
    ILovDetail lovProvDet;
    CacheInterface cache;
   
   
    logger.debug("IN");
   
    try {
   
      biparameterId = getAttributeAsString( PARAMETER_ID );
      selectedParameterValuesJSON = getAttributeAsJSONObject( SELECTED_PARAMETER_VALUES );
      if(this.requestContainsAttribute( FILTERS ) ) {
        filtersJSON = getAttributeAsJSONObject( FILTERS );
      }
     
      mode = getAttributeAsString( MODE );
      start = getAttributeAsInteger( START );
      limit = getAttributeAsInteger( LIMIT );
     
      logger.debug("Parameter [" + PARAMETER_ID + "] is equals to [" + biparameterId + "]");
      logger.debug("Parameter [" + MODE + "] is equals to [" + mode + "]");
      logger.debug("Parameter [" + START + "] is equals to [" + start + "]");
      logger.debug("Parameter [" + LIMIT + "] is equals to [" + limit + "]");
     
      if(mode == null) {
        mode = MODE_SIMPLE;
      }
     
      Assert.assertNotNull(getContext(), "Parameter [" + PARAMETER_ID + "] cannot be null" );
      Assert.assertNotNull(getContext(), "Execution context cannot be null" );
      Assert.assertNotNull(getContext().getExecutionInstance( ExecutionInstance.class.getName() ), "Execution instance cannot be null");
   
      executionInstance = getContext().getExecutionInstance( ExecutionInstance.class.getName() );
      executionInstance.refreshParametersValues(selectedParameterValuesJSON, false);
     
      BIObject obj = executionInstance.getBIObject();
     
      // START converts JSON object with document's parameters into an hashmap
      selectedParameterValues = null;
      if(selectedParameterValuesJSON != null) {
        try {
          selectedParameterValues = new HashMap();
          Iterator it = selectedParameterValuesJSON.keys();
          while(it.hasNext()){
            String key = (String)it.next();
            Object v = selectedParameterValuesJSON.get(key);
            if(v instanceof JSONArray) {
              JSONArray a = (JSONArray)v;
              String[] nv = new String[a.length()];
              for(int i = 0; i < a.length(); i++) {
                  nv[i] = (String)a.get(i);
              }
             
              selectedParameterValues.put( key, nv );
          } else if(v instanceof String) {
              selectedParameterValues.put( key, (String)v );
            } else {
              Assert.assertUnreachable("attributes of PARAMETERS JSONObject can be only JSONArray or String");
            }
          }
        } catch (JSONException e) {
          throw new SpagoBIServiceException("parameter JSONObject is malformed", e);
        }
      }
      // END converts JSON object with document's parameters into an hashmap
     
      // START get the relevant biobject parameter
      biObjectParameter = null;
      List parameters = obj.getBiObjectParameters();
      for(int i = 0; i < parameters.size(); i++) {
        BIObjectParameter p = (BIObjectParameter) parameters.get(i);
        if( biparameterId.equalsIgnoreCase( p.getParameterUrlName() ) ) {
          biObjectParameter = p;
          break;
        }
      }
      Assert.assertNotNull(biObjectParameter, "Impossible to find parameter [" + biparameterId + "]" );
      // END get the relevant biobject parameter
     
      lovProvDet = executionInstance.getLovDetail(biObjectParameter);
     
      // START get the lov result
      String lovResult = null;
      try {
        // get the result of the lov
        IEngUserProfile profile = getUserProfile();

        // get from cache, if available
        LovResultCacheManager executionCacheManager = new LovResultCacheManager();
        lovResult = executionCacheManager.getLovResult(profile, biObjectParameter, executionInstance, true);
       
        // get all the rows of the result
        LovResultHandler lovResultHandler = new LovResultHandler(lovResult);   
        rows = lovResultHandler.getRows();
     
      } catch (Exception e) {
        throw new SpagoBIServiceException(SERVICE_NAME, "Impossible to get parameter's values", e);
      }
     
      Assert.assertNotNull(lovResult, "Impossible to get parameter's values" );
      // END get the lov result
     
      // START filtering the list by filtering toolbar
      try {
        if(filtersJSON != null) {
          String valuefilter = (String) filtersJSON.get(SpagoBIConstants.VALUE_FILTER);
          String columnfilter = (String) filtersJSON.get(SpagoBIConstants.COLUMN_FILTER);
          String typeFilter = (String) filtersJSON.get(SpagoBIConstants.TYPE_FILTER);
          String typeValueFilter = (String) filtersJSON.get(SpagoBIConstants.TYPE_VALUE_FILTER);
          rows = DelegatedBasicListService.filterList(rows, valuefilter, typeValueFilter, columnfilter, typeFilter);
        }
      } catch (JSONException e) {
        throw new SpagoBIServiceException(SERVICE_NAME, "Impossible to read filter's configuration", e);
      }
      // END filtering the list by filtering toolbar
     
     
      // START filtering for correlation (only for DependenciesPostProcessingLov, i.e. scripts, java classes and fixed lists)
      biParameterExecDependencies = executionInstance
          .getDependencies(biObjectParameter);
      if (lovProvDet instanceof DependenciesPostProcessingLov
          && selectedParameterValues != null
          && biParameterExecDependencies != null
          && biParameterExecDependencies.size() > 0) {
        rows = ((DependenciesPostProcessingLov) lovProvDet)
            .processDependencies(rows, selectedParameterValues,
                biParameterExecDependencies);
      }
      // END filtering for correlation
     
     
      // START building JSON object to be returned
      JSONObject valuesJSON;
      try {
        JSONArray valuesDataJSON = new JSONArray();
       
        valueColumn = lovProvDet.getValueColumnName();
        displayColumn = lovProvDet.getDescriptionColumnName();
        descriptionColumn = displayColumn;
       
       
       
        int lb = (start != null)? start.intValue(): 0;
        int ub = (limit != null)? lb + limit.intValue(): rows.size() - lb;
        ub = (ub > rows.size())? rows.size(): ub;
       
        for (int q = lb; q < ub; q++) {
          SourceBean row = (SourceBean) rows.get(q);
          JSONObject valueJSON = new JSONObject();
         
          if(MODE_COMPLETE.equalsIgnoreCase( mode )) {
            List columns = row.getContainedAttributes();
            for(int i = 0; i < columns.size(); i++) {
              SourceBeanAttribute attribute = (SourceBeanAttribute)columns.get(i);           
              valueJSON.put(attribute.getKey().toUpperCase(), attribute.getValue());
            }
          } else {
            String value = (String) row.getAttribute(valueColumn);
            String description = (String) row.getAttribute(descriptionColumn);         
            valueJSON.put("value", value);
            valueJSON.put("label", description);
            valueJSON.put("description", description)
          }         
         
          valuesDataJSON.put(valueJSON);
        }
       
        String[] visiblecolumns;
       
        if(MODE_COMPLETE.equalsIgnoreCase( mode )) {
          visiblecolumns = (String[])lovProvDet.getVisibleColumnNames().toArray(new String[0]);
          for(int j = 0; j< visiblecolumns.length; j++) {
            visiblecolumns[j] = visiblecolumns[j].toUpperCase();
          }
        } else {
         
View Full Code Here

   */
  public List getAllColumnsNames(ModalitiesValue lov) {
    List names = new ArrayList();
    try{
      String lovProvider = lov.getLovProvider();
      ILovDetail lovProvDet = LovDetailFactory.getLovFromXML(lovProvider);
      List viscols = lovProvDet.getVisibleColumnNames();
      List inviscols = lovProvDet.getInvisibleColumnNames();
      names.addAll(viscols);
      names.addAll(inviscols);
    } catch (Exception e) {
      names = new ArrayList();
      SpagoBITracer.major(SpagoBIConstants.NAME_MODULE, this.getClass().getName(),
View Full Code Here

TOP

Related Classes of it.eng.spagobi.behaviouralmodel.lov.bo.ILovDetail

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.