/*******************************************************************************
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library 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.
*
*******************************************************************************/
package com.liferay.ide.project.core;
import com.liferay.ide.core.util.CoreUtil;
import java.util.HashSet;
import java.util.Set;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ProjectScope;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.core.runtime.preferences.InstanceScope;
import org.osgi.service.prefs.BackingStoreException;
/**
* @author Kuo Zhang
* @author Terry Jia
*/
public class ValidationPreferences
{
public enum ValidationType
{
METHOD_NOT_FOUND,
PROPERTY_NOT_FOUND,
REFERENCE_NOT_FOUND,
RESOURCE_NOT_FOUND,
STATIC_VALUE_UNDEFINED,
SYNTAX_INVALID,
TYPE_NOT_FOUND,
TYPE_HIERARCHY_INCORRECT,
}
// *** validation preferences of liferay-display.xml ***
public static final String LIFERAY_DISPLAY_XML_TYPE_HIERARCHY_INCORRECT = "liferay-display-xml-type-hierarchy-incorrect";
public static final String LIFERAY_DISPLAY_XML_TYPE_NOT_FOUND = "liferay-display-xml-type-not-found";
public static final String LIFERAY_DISPLAY_XML_REFERENCE_NOT_FOUND = "liferay-display-xml-reference-not-found";
public static final String LIFERAY_DISPLAY_XML_RESOURCE_NOT_FOUND = "liferay-display-xml-resource-not-found";
public static final String LIFERAY_DISPLAY_XML_SYNTAX_INVALID = "liferay-display-xml-syntax-invalid";
// *** validation preferences of liferay-hook.xml ***
public static final String LIFERAY_HOOK_XML_TYPE_HIERARCHY_INCORRECT = "liferay-hook-xml-type-hierarchy-incorrect";
public static final String LIFERAY_HOOK_XML_TYPE_NOT_FOUND = "liferay-hook-xml-type-not-found";
public static final String LIFERAY_HOOK_XML_REFERENCE_NOT_FOUND = "liferay-hook-xml-reference-not-found";
public static final String LIFERAY_HOOK_XML_RESOURCE_NOT_FOUND = "liferay-hook-xml-resource-not-found";
public static final String LIFERAY_HOOK_XML_SYNTAX_INVALID = "liferay-hook-xml-syntax-invalid";
// *** validation preferences of liferay-layouttpl.xml
public static final String LIFERAY_LAYOUTTPL_XML_TYPE_HIERARCHY_INCORRECT = "liferay-layout-templates-xml-type-hierarchy-incorrect";
public static final String LIFERAY_LAYOUTTPL_XML_TYPE_NOT_FOUND = "liferay-layout-templates-xml-type-not-found";
public static final String LIFERAY_LAYOUTTPL_XML_REFERENCE_NOT_FOUND = "liferay-layout-templates-xml-reference-not-found";
public static final String LIFERAY_LAYOUTTPL_XML_RESOURCE_NOT_FOUND = "liferay-layout-templates-xml-resource-not-found";
public static final String LIFERAY_LAYOUTTPL_XML_SYNTAX_INVALID = "liferay-layout-templates-xml-syntax-invalid";
// *** validation preferences of liferay-portlet.xml ***
public static final String LIFERAY_PORTLET_XML_TYPE_HIERARCHY_INCORRECT = "liferay-portlet-xml-type-hierarchy-incorrect";
public static final String LIFERAY_PORTLET_XML_TYPE_NOT_FOUND = "liferay-portlet-xml-type-not-found";
public static final String LIFERAY_PORTLET_XML_REFERENCE_NOT_FOUND = "liferay-portlet-xml-reference-not-found";
public static final String LIFERAY_PORTLET_XML_RESOURCE_NOT_FOUND = "liferay-portlet-xml-resource-not-found";
public static final String LIFERAY_PORTLET_XML_SYNTAX_INVALID = "liferay-portlet-xml-syntax-invalid";
// *** validation preferences of portlet.xml ***
public static final String PORTLET_XML_TYPE_HIERARCHY_INCORRECT = "portlet-xml-type-hierarchy-incorrect";
public static final String PORTLET_XML_TYPE_NOT_FOUND = "portlet-xml-type-not-found";
public static final String PORTLET_XML_REFERENCE_NOT_FOUND = "portlet-xml-reference-not-found";
public static final String PORTLET_XML_RESOURCE_NOT_FOUND ="portlet-xml-resource-not-found";
public static final String PORTLET_XML_SYNTAX_INVALID = "portlet-xml-syntax-invalid";
// *** validation preferences of service.xml ***
public static final String SERVICE_XML_TYPE_HIERARCHY_INCORRECT = "service-xml-type-hierarchy-incorrect";
public static final String SERVICE_XML_TYPE_NOT_FOUND = "service-xml-type-not-found";
public static final String SERVICE_XML_REFERENCE_NOT_FOUND = "service-xml-reference-not-found";
public static final String SERVICE_XML_RESOURCE_NOT_FOUND = "service-xml-resource-not-found";
public static final String SERVICE_XML_SYNTAX_INVALID = "service-xml-syntax-invalid";
// *** validation preferences of liferay jsp files ***
public static final String LIFERAY_JSP_METHOD_NOT_FOUND = "liferay-jsp-method-not-found";
public static final String LIFERAY_JSP_PROPERTY_NOT_FOUND = "liferay-jsp--property-not-found";
public static final String LIFERAY_JSP_REFERENCE_NOT_FOUND = "liferay-jsp-reference-not-found";
public static final String LIFERAY_JSP_RESOURCE_NOT_FOUND = "liferya-jsp-resource-not-found";
public static final String LIFERAY_JSP_STATIC_VALUE_UNDEFINED = "liferay-jsp-static-value-undefined";
public static final String LIFERAY_JSP_SYNTAX_INVALID = "liferay-jsp-syntax-value_invalid";
public static final String LIFERAY_JSP_TYPE_NOT_FOUND = "liferay-jsp-type-not-found";
public static final String LIFERAY_JSP_TYPE_HIERARCHY_INCORRECT = "liferay-jsp-hierarchy-incorrect";
private static Set<String> preferenceKeys;
static
{
preferenceKeys = new HashSet<String>();
preferenceKeys.add( LIFERAY_DISPLAY_XML_TYPE_HIERARCHY_INCORRECT );
preferenceKeys.add( LIFERAY_DISPLAY_XML_TYPE_NOT_FOUND );
preferenceKeys.add( LIFERAY_DISPLAY_XML_REFERENCE_NOT_FOUND );
preferenceKeys.add( LIFERAY_DISPLAY_XML_RESOURCE_NOT_FOUND );
preferenceKeys.add( LIFERAY_DISPLAY_XML_SYNTAX_INVALID );
preferenceKeys.add( LIFERAY_HOOK_XML_TYPE_HIERARCHY_INCORRECT );
preferenceKeys.add( LIFERAY_HOOK_XML_TYPE_NOT_FOUND );
preferenceKeys.add( LIFERAY_HOOK_XML_REFERENCE_NOT_FOUND );
preferenceKeys.add( LIFERAY_HOOK_XML_RESOURCE_NOT_FOUND );
preferenceKeys.add( LIFERAY_HOOK_XML_SYNTAX_INVALID );
preferenceKeys.add( LIFERAY_LAYOUTTPL_XML_TYPE_HIERARCHY_INCORRECT );
preferenceKeys.add( LIFERAY_LAYOUTTPL_XML_TYPE_NOT_FOUND );
preferenceKeys.add( LIFERAY_LAYOUTTPL_XML_REFERENCE_NOT_FOUND );
preferenceKeys.add( LIFERAY_LAYOUTTPL_XML_RESOURCE_NOT_FOUND );
preferenceKeys.add( LIFERAY_LAYOUTTPL_XML_SYNTAX_INVALID );
preferenceKeys.add( LIFERAY_PORTLET_XML_TYPE_HIERARCHY_INCORRECT );
preferenceKeys.add( LIFERAY_PORTLET_XML_TYPE_NOT_FOUND );
preferenceKeys.add( LIFERAY_PORTLET_XML_REFERENCE_NOT_FOUND );
preferenceKeys.add( LIFERAY_PORTLET_XML_RESOURCE_NOT_FOUND );
preferenceKeys.add( LIFERAY_PORTLET_XML_SYNTAX_INVALID );
preferenceKeys.add( PORTLET_XML_TYPE_HIERARCHY_INCORRECT );
preferenceKeys.add( PORTLET_XML_TYPE_NOT_FOUND );
preferenceKeys.add( PORTLET_XML_REFERENCE_NOT_FOUND );
preferenceKeys.add( PORTLET_XML_RESOURCE_NOT_FOUND );
preferenceKeys.add( PORTLET_XML_SYNTAX_INVALID );
preferenceKeys.add( SERVICE_XML_TYPE_HIERARCHY_INCORRECT );
preferenceKeys.add( SERVICE_XML_TYPE_NOT_FOUND );
preferenceKeys.add( SERVICE_XML_REFERENCE_NOT_FOUND );
preferenceKeys.add( SERVICE_XML_RESOURCE_NOT_FOUND );
preferenceKeys.add( SERVICE_XML_SYNTAX_INVALID );
preferenceKeys.add( LIFERAY_JSP_METHOD_NOT_FOUND );
preferenceKeys.add( LIFERAY_JSP_PROPERTY_NOT_FOUND );
preferenceKeys.add( LIFERAY_JSP_REFERENCE_NOT_FOUND );
preferenceKeys.add( LIFERAY_JSP_RESOURCE_NOT_FOUND );
preferenceKeys.add( LIFERAY_JSP_STATIC_VALUE_UNDEFINED );
preferenceKeys.add( LIFERAY_JSP_SYNTAX_INVALID );
preferenceKeys.add( LIFERAY_JSP_TYPE_NOT_FOUND );
preferenceKeys.add( LIFERAY_JSP_TYPE_HIERARCHY_INCORRECT );
}
public static boolean containsKey( String liferayPluginValidationType )
{
return preferenceKeys.contains( liferayPluginValidationType );
}
public static String getValidationPreferenceKey( String descriptorFileName, ValidationType type )
{
StringBuilder retval = new StringBuilder();
if( !CoreUtil.isNullOrEmpty( descriptorFileName ) )
{
retval.append( ( descriptorFileName.replace( ".", "-" ).toLowerCase() ) );
retval.append( "-" );
}
if( type != null )
{
retval.append( type.toString().toLowerCase().replace( "_", "-" ) );
}
return retval.toString();
}
// Levels: IGNORE: -1, ERROR: 1, WARNNING: 2
public static void setInstanceScopeValidationLevel( String liferayPluginValidationType, int validationLevel )
{
if( preferenceKeys.contains( liferayPluginValidationType ) &&
( validationLevel == -1 || validationLevel == 1 || validationLevel == 2 ) )
{
final IEclipsePreferences node = InstanceScope.INSTANCE.getNode( ProjectCore.PLUGIN_ID );
node.putInt( liferayPluginValidationType, validationLevel );
try
{
node.flush();
}
catch( BackingStoreException e )
{
ProjectCore.logError( "Error setting validation preferences", e );
}
}
}
public static void setProjectScopeValidationLevel(
IProject project, String liferayPluginValidationType, int validationLevel )
{
final IEclipsePreferences node = new ProjectScope( project ).getNode( ProjectCore.PLUGIN_ID );
if( preferenceKeys.contains( liferayPluginValidationType ) &&
( validationLevel == -1 || validationLevel == 1 || validationLevel == 2 ) )
{
node.putBoolean( ProjectCore.USE_PROJECT_SETTINGS, true );
node.putInt( liferayPluginValidationType, validationLevel );
try
{
node.flush();
}
catch( BackingStoreException e )
{
ProjectCore.logError( "Error setting validation preferences", e );
}
}
}
}