2525import java .io .IOException ;
2626import java .net .URI ;
2727import java .net .URISyntaxException ;
28- import java .util .ArrayList ;
2928import java .util .Arrays ;
3029import java .util .Base64 ;
3130import java .util .Base64 .Encoder ;
3837import java .util .Map ;
3938import java .util .Map .Entry ;
4039import java .util .Objects ;
41- import java .util .Optional ;
4240import java .util .stream .Collectors ;
4341import java .util .zip .ZipEntry ;
4442import java .util .zip .ZipInputStream ;
5654
5755import it .eng .knowage .commons .multitenant .OrganizationImageManager ;
5856import it .eng .knowage .engine .api .export .dashboard .excel .DashboardExcelExporter ;
57+ import it .eng .knowage .engine .api .export .nodejs .PdfExporterV2 ;
5958import it .eng .spagobi .tenant .TenantManager ;
60- import org .apache .commons .lang3 .StringUtils ;
6159import org .apache .http .client .utils .URIBuilder ;
6260import org .apache .logging .log4j .LogManager ;
6361import org .apache .logging .log4j .Logger ;
7169import it .eng .knowage .engine .cockpit .CockpitEngine ;
7270import it .eng .knowage .engine .cockpit .CockpitEngineInstance ;
7371import it .eng .knowage .engine .cockpit .api .AbstractCockpitEngineResource ;
74- import it .eng .knowage .engine .cockpit .api .export .pdf .nodejs .PdfExporterV2 ;
7572import it .eng .knowage .engine .cockpit .api .export .png .PngExporter ;
7673import it .eng .knowage .export .wrapper .beans .RenderOptions ;
7774import it .eng .knowage .export .wrapper .beans .ViewportDimensions ;
7875import it .eng .spago .error .EMFInternalError ;
7976import it .eng .spago .error .EMFUserError ;
8077import it .eng .spago .security .IEngUserProfile ;
8178import it .eng .spagobi .analiticalmodel .document .bo .BIObject ;
82- import it .eng .spagobi .behaviouralmodel .analyticaldriver .bo .BIObjectParameter ;
8379import it .eng .spagobi .commons .SingletonConfig ;
8480import it .eng .spagobi .commons .dao .DAOFactory ;
8581import it .eng .spagobi .commons .utilities .GeneralUtilities ;
@@ -572,11 +568,7 @@ private String getRequestUrlForPdfExport(HttpServletRequest request) throws JSON
572568 Engine eng = biObject .getEngine ();
573569 URIBuilder externalUrl = GeneralUtilities .getBE2BEEngineUrl (eng );
574570
575- if (isDashboard (eng )) {
576- manageParametersForDashboards (biObject , documentLabel , externalUrl );
577- } else {
578- manageParametersForEverythingElse (externalUrl );
579- }
571+ manageParameters (externalUrl );
580572 externalUrl .setParameter ("export" , "true" );
581573 return externalUrl .toString ();
582574 }
@@ -593,11 +585,7 @@ private String getRequestUrlForExcelExport(HttpServletRequest request) throws JS
593585 Engine eng = biObject .getEngine ();
594586 URIBuilder externalUrl = GeneralUtilities .getBE2BEEngineUrl (eng );
595587
596- if (isDashboard (eng )) {
597- manageParametersForDashboards (biObject , documentLabel , externalUrl );
598- } else {
599- manageParametersForEverythingElse (externalUrl );
600- }
588+ manageParameters (externalUrl );
601589 externalUrl .setParameter ("scheduledexport" , "true" );
602590 return externalUrl .toString ();
603591 }
@@ -640,16 +628,7 @@ private JSONObject buildBaseTemplate() {
640628 return template ;
641629 }
642630
643- private void manageParametersForDashboards (BIObject biObject , String documentLabel , URIBuilder uriBuilder )
644- throws JSONException {
645-
646- uriBuilder .setPath (getKnowageVueContext () + "/dashboard/" + documentLabel );
647- uriBuilder .setParameter ("params" , createJsonFromParemeters (biObject ));
648- uriBuilder .setParameter ("role" , getExecutionRoleForDashboard ());
649- addParametersToHideToolbarAndMenuInVue (uriBuilder );
650- }
651-
652- private void manageParametersForEverythingElse (URIBuilder uriBuilder ) {
631+ private void manageParameters (URIBuilder uriBuilder ) {
653632 Map <String , String []> parameterMap = request .getParameterMap ();
654633 for (Entry <String , String []> parameter : parameterMap .entrySet ()) {
655634 String key = parameter .getKey ();
@@ -660,114 +639,9 @@ private void manageParametersForEverythingElse(URIBuilder uriBuilder) {
660639 }
661640 }
662641
663- private String getExecutionRoleForDashboard () {
664- Map <String , String []> parameterMap = request .getParameterMap ();
665- String role = Optional .ofNullable (parameterMap .get ("SBI_EXECUTION_ROLE" )).map (e -> e [0 ]).orElse ("" );
666- if (StringUtils .isEmpty (role )) {
667- role = Optional .ofNullable (parameterMap .get ("role" )).map (e -> e [0 ]).orElse ("" );
668- }
669- return role ;
670- }
671-
672- private String createJsonFromParemeters (BIObject biObject ) throws JSONException {
673- List <BIObjectParameter > drivers = biObject .getDrivers ();
674- // We wrap parameters map because it could be updated here below
675- Map <String , String []> parameterMap = new HashMap <>(request .getParameterMap ());
676- JSONArray parametersAsJson = new JSONArray ();
677-
678- reconcileParametersWithParamsV2FromUrl (parameterMap );
679-
680- for (BIObjectParameter driver : drivers ) {
681- String urlName = driver .getParameterUrlName ();
682-
683- boolean isMultivalue = driver .isMultivalue ();
684-
685- List <String > values = Optional .ofNullable (parameterMap .get (urlName )).map (Arrays ::asList )
686- .orElse (Collections .emptyList ());
687- List <String > descriptions = Optional .ofNullable (parameterMap .get (urlName + "_description" ))
688- .map (Arrays ::asList ).orElse (Collections .emptyList ());
689-
690- List <String > splitValues = new ArrayList <>();
691- if (biObject .getEngine ().getLabel ().equals ("knowagedashboardengine" )) {
692- List <String > finalSplitValues = splitValues ;
693- values .forEach (v -> {
694- finalSplitValues .addAll (Arrays .asList (v .split (";" )));
695- });
696- }
697-
698- if (OUTPUT_TYPE .equals (urlName )) {
699- LOGGER .debug ("Forcing outputType to HTML" );
700- splitValues = Arrays .asList ("HTML" );
701- descriptions = Arrays .asList ("HTML" );
702- }
703-
704- JSONObject currentDriverJson = new JSONObject ();
705-
706- JSONArray valuesAsJSONArray = new JSONArray ();
707-
708- for (int i = 0 ; i < Math .max (splitValues .size (), descriptions .size ()); i ++) {
709- Object value = Iterables .get (splitValues , i , "" );
710- Object description = Iterables .get (descriptions , i , "" );
711-
712- JSONObject currValue = new JSONObject ();
713-
714- currValue .put ("value" , value );
715- currValue .put ("description" , description );
716-
717- valuesAsJSONArray .put (currValue );
718- }
719-
720- currentDriverJson .put ("value" , valuesAsJSONArray );
721- currentDriverJson .put ("urlName" , urlName );
722- currentDriverJson .put ("multivalue" , isMultivalue );
723-
724- parametersAsJson .put (currentDriverJson );
725- }
726-
727- String parametersAsString = parametersAsJson .toString ();
728- return java .util .Base64 .getEncoder ().withoutPadding ().encodeToString (parametersAsString .getBytes ());
729- }
730-
731- private boolean isDashboard (Engine eng ) {
732- return "knowagedashboardengine" .equals (eng .getLabel ());
733- }
734-
735642 private void addParametersToHideToolbarAndMenuInVue (URIBuilder uriBuilder ) {
736643 uriBuilder .setParameter ("toolbar" , "false" );
737644 uriBuilder .setParameter ("menu" , "false" );
738645 uriBuilder .setParameter ("finalUser" , "true" );
739646 }
740-
741- private void reconcileParametersWithParamsV2FromUrl (Map <String , String []> parameterMap ) throws JSONException {
742- // Manage new parameters format in Base64
743- String parametersV2FromUrl = Optional .ofNullable (request .getParameter ("params" ))
744- .map (e -> new String (java .util .Base64 .getDecoder ().decode (e ))).orElse ("[]" );
745- JSONArray parametersV2FromUrlAsJSONArray = new JSONArray (parametersV2FromUrl );
746- for (int i = 0 ; i < parametersV2FromUrlAsJSONArray .length (); i ++) {
747- JSONObject currParameterFromParametersV2 = (JSONObject ) parametersV2FromUrlAsJSONArray .get (i );
748-
749- String urlName = currParameterFromParametersV2 .getString ("urlName" );
750-
751- if (!parameterMap .containsKey (urlName )) {
752- List <String > values = new ArrayList <>();
753- List <String > descriptions = new ArrayList <>();
754-
755- JSONArray value = currParameterFromParametersV2 .getJSONArray ("value" );
756-
757- for (int k = 0 ; k < value .length (); k ++) {
758- JSONObject currentParameterValue = (JSONObject ) value .get (k );
759-
760- String cValue = currentParameterValue .getString ("value" );
761- String cDesc = currentParameterValue .getString ("description" );
762-
763- values .add (cValue );
764- descriptions .add (cDesc );
765- }
766-
767- parameterMap .put (urlName , values .toArray (new String [0 ]));
768- parameterMap .put (urlName + "_description" , descriptions .toArray (new String [0 ]));
769- }
770- }
771- }
772-
773647}
0 commit comments