/*!
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software
* Foundation.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
* or from the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* Copyright (c) 2002-2013 Pentaho Corporation.. All rights reserved.
*/
package org.pentaho.reporting.designer.extensions.pentaho.repository;
import org.pentaho.reporting.designer.core.ReportDesignerContext;
import org.pentaho.reporting.designer.core.editor.ReportDocumentContext;
import org.pentaho.reporting.designer.core.inspections.Inspection;
import org.pentaho.reporting.designer.core.inspections.InspectionResult;
import org.pentaho.reporting.designer.core.inspections.InspectionResultListener;
import org.pentaho.reporting.designer.core.inspections.ParameterLocationInfo;
import org.pentaho.reporting.engine.classic.core.AbstractReportDefinition;
import org.pentaho.reporting.engine.classic.core.MasterReport;
import org.pentaho.reporting.engine.classic.core.ReportDataFactoryException;
import org.pentaho.reporting.engine.classic.core.parameters.ParameterDefinitionEntry;
import org.pentaho.reporting.engine.classic.core.parameters.ReportParameterDefinition;
import java.util.HashSet;
public class ReservedParameterNamesInspection implements Inspection {
private HashSet<String> reservedParameterNames;
@SuppressWarnings( "HardCodedStringLiteral" )
public ReservedParameterNamesInspection() {
reservedParameterNames = new HashSet<String>();
reservedParameterNames.add( "solution" );
reservedParameterNames.add( "name" );
reservedParameterNames.add( "path" );
reservedParameterNames.add( "action" );
reservedParameterNames.add( "renderMode" );
reservedParameterNames.add( "paginate" );
reservedParameterNames.add( "autoSubmit" );
reservedParameterNames.add( "subscribe" );
reservedParameterNames.add( "subscription-id" );
reservedParameterNames.add( "subscription-name" );
reservedParameterNames.add( "destination" );
reservedParameterNames.add( "output-type" );
reservedParameterNames.add( "output-target" );
reservedParameterNames.add( "report-definition" );
reservedParameterNames.add( "useContentRepository" );
reservedParameterNames.add( "accepted-page" );
reservedParameterNames.add( "print" );
reservedParameterNames.add( "printer-name" );
reservedParameterNames.add( "content-handler-pattern" );
reservedParameterNames.add( "workbook" );
reservedParameterNames.add( "res-url" );
}
/**
* The inspection is cheap enough to be run constantly while editing.
*
* @return true, if it can run while the editing is running, false otherwise.
*/
public boolean isInlineInspection() {
return true;
}
public void inspect( final ReportDesignerContext designerContext, final ReportDocumentContext reportRenderContext,
final InspectionResultListener resultHandler ) throws ReportDataFactoryException {
final AbstractReportDefinition abstractReportDefinition = reportRenderContext.getReportDefinition();
if ( abstractReportDefinition instanceof MasterReport == false ) {
return;
}
final MasterReport report = (MasterReport) abstractReportDefinition;
final ReportParameterDefinition definition = report.getParameterDefinition();
final ParameterDefinitionEntry[] parameterDefinitionEntries = definition.getParameterDefinitions();
for ( int i = 0; i < parameterDefinitionEntries.length; i++ ) {
final ParameterDefinitionEntry definitionEntry = parameterDefinitionEntries[i];
if ( reservedParameterNames.contains( definitionEntry.getName() ) ) {
resultHandler.notifyInspectionResult( new InspectionResult( this, InspectionResult.Severity.WARNING, Messages
.getInstance().formatMessage( "ReservedParameterNamesInspection.ReservedParameterNameUsed",
definitionEntry.getName() ), new ParameterLocationInfo( definitionEntry ) ) );
}
}
}
}