/** * Creates a WidgetGrid * * <p>After creating an instance of this class <CODE>validate</CODE> should be called. * * @param type The type of the widget, currently only TYPE_DIAL is supported * @param definitionPath The path and name of the XML definition of the dial * @param widgetWidth The width of the image to be created * @param widgetHeight The height of the image to be created * @param urlFactory The urlFactory for the content * @param messages The messages list for any logger messages */ public WidgetGridComponent( final String definitionPath, final IPentahoUrlFactory urlFactory, final List messages) { super(urlFactory, messages, null); this.definitionPath = definitionPath; ActionInfo info = ActionInfo.parseActionString(definitionPath); if (info != null) { setSourcePath(info.getSolutionName() + File.separator + info.getPath()); } setXsl("text/html", "DialWidget.xsl"); // $NON-NLS-1$ //$NON-NLS-2$ }
public FilterPanelComponent( final String definitionPath, String xslName, final IPentahoUrlFactory urlFactory, final List messages) { super(urlFactory, messages, null); this.definitionPath = definitionPath; if (xslName == null) { // use a default XSL xslName = "FilterPanelDefault.xsl"; // $NON-NLS-1$ } ActionInfo info = ActionInfo.parseActionString(definitionPath); if (info != null) { setSourcePath(info.getSolutionName() + File.separator + info.getPath()); } this.xslName = xslName; defaultValues = new HashMap(); }
/** * Creates a DashboardWidgetComponent. * * <p>After creating an instance of this class <CODE>validate</CODE> should be called. * * @param type The type of the widget, currently only TYPE_DIAL is supported * @param definitionPath The path and name of the XML definition of the dial * @param width The width of the image to be created * @param height The height of the image to be created * @param urlFactory The urlFactory for the content * @param messages The messages list for any logger messages */ public DashboardWidgetComponent( final int type, final String definitionPath, final int width, final int height, final IPentahoUrlFactory urlFactory, final List messages) { super(urlFactory, messages, null); this.type = type; this.definitionPath = definitionPath; this.width = width; this.height = height; ActionInfo info = ActionInfo.parseActionString(definitionPath); if (info != null) { setSourcePath(info.getSolutionName() + File.separator + info.getPath()); } // Set the XSL file to be used to generate the HTML setXsl("text/html", "DialWidget.xsl"); // $NON-NLS-1$ //$NON-NLS-2$ }
public static int saveAnalysis( final IPentahoSession session, final HashMap props, final String path, String fileName, final boolean overwrite) { if ("true" .equals( PentahoSystem.getSystemSetting( "kiosk-mode", "false"))) { // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ throw new RuntimeException( Messages.getInstance() .getErrorString("ANALYSISSAVER.ERROR_0006_SAVE_IS_DISABLED")); // $NON-NLS-1$ } int result = 0; try { AnalysisSaver.logger = LogFactory.getLog(AnalysisSaver.class); String baseUrl = PentahoSystem.getApplicationContext().getSolutionPath(""); // $NON-NLS-1$ ISolutionRepository solutionRepository = PentahoSystem.get(ISolutionRepository.class, session); // We will (at this point in time) always have an original action sequence to start from... String originalActionReference = (String) props.get("actionreference"); // $NON-NLS-1$ if (originalActionReference == null) { throw new MissingParameterException( Messages.getInstance() .getErrorString( "ANALYSISSAVER.ERROR_0001_MISSING_ACTION_REFERENCE")); //$NON-NLS-1$ } Document document = null; try { org.dom4j.io.SAXReader reader = new org.dom4j.io.SAXReader(); reader.setEntityResolver(new SolutionURIResolver()); document = reader.read( ActionSequenceResource.getInputStream( originalActionReference, LocaleHelper.getLocale())); } catch (Throwable t) { // XML document can't be read. We'll just return a null document. } // Update the document with the stuff we passed in on the props document = AnalysisSaver.updateDocument(document, props); fileName = fileName.endsWith(AnalysisSaver.SUFFIX) ? fileName : fileName + AnalysisSaver.SUFFIX; result = solutionRepository.publish( baseUrl, path, fileName, document.asXML().getBytes(document.getXMLEncoding()), overwrite); // Now save the resource files ActionInfo actionInfo = ActionInfo.parseActionString(originalActionReference); String originalPath = actionInfo.getSolutionName() + "/" + actionInfo.getPath(); // $NON-NLS-1$ String originalFileName = actionInfo.getActionName(); originalFileName = originalFileName.substring(0, originalFileName.lastIndexOf(AnalysisSaver.SUFFIX)); ISolutionFile[] parentFiles = solutionRepository .getSolutionFile(originalPath, ISolutionRepository.ACTION_EXECUTE) .listFiles(); String baseFileName = fileName.substring(0, fileName.lastIndexOf(AnalysisSaver.SUFFIX)); for (ISolutionFile aSolutionFile : parentFiles) { if (!aSolutionFile.isDirectory() && aSolutionFile.getFileName().startsWith(originalFileName) && aSolutionFile .getFileName() .toLowerCase() .endsWith(AnalysisSaver.PROPERTIES_SUFFIX)) { String newFileName = aSolutionFile.getFileName().replaceFirst(originalFileName, baseFileName); result = result & solutionRepository.publish( baseUrl, path, newFileName, aSolutionFile.getData(), overwrite); } } solutionRepository.resetRepository(); } catch (Exception e) { AnalysisSaver.logger.error( Messages.getInstance().getErrorString("ANALYSISSAVER.ERROR_0000_UNKNOWN"), e); //$NON-NLS-1$ result = ISolutionRepository.FILE_ADD_FAILED; } return result; }