| /****************************************************************************** |
| * Copyright (c) 2008 BEA Systems, Inc. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Konstantin Komissarchik - initial implementation and ongoing maintenance |
| ******************************************************************************/ |
| |
| package org.eclipse.wst.common.project.facet.core.internal; |
| |
| import java.text.MessageFormat; |
| import java.util.Arrays; |
| |
| import org.eclipse.core.runtime.Status; |
| import org.eclipse.osgi.util.NLS; |
| |
| /** |
| * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a> |
| */ |
| |
| public final class ValidationProblem |
| |
| extends Status |
| |
| { |
| public static final class Type |
| { |
| public static final Type REQUIRES |
| = new Type( Resources.requires ); |
| |
| public static final Type REQUIRES_ONE_OF_TWO |
| = new Type( Resources.requiresOneOfTwo ); |
| |
| public static final Type REQUIRES_GROUP |
| = new Type( Resources.requiresGroup ); |
| |
| public static final Type CONFLICTS |
| = new Type( Resources.oneof ); |
| |
| public static final Type COMPLEX |
| = new Type( Resources.complex ); |
| |
| public static final Type INSTALL_NOT_SUPPORTED |
| = new Type( Resources.installNotSupported ); |
| |
| public static final Type UNINSTALL_NOT_SUPPORTED |
| = new Type( Resources.uninstallNotSupported ); |
| |
| public static final Type VERSION_CHANGE_NOT_SUPPORTED |
| = new Type( Resources.versionChangeNotSupported ); |
| |
| public static final Type MULTIPLE_ACTIONS_NOT_SUPPORTED |
| = new Type( Resources.multipleActionsNotSupported ); |
| |
| public static final Type FACET_ALREADY_INSTALLED |
| = new Type( Resources.facetAlreadyInstalled ); |
| |
| public static final Type CANNOT_UNINSTALL |
| = new Type( Resources.cannotUninstall ); |
| |
| public static final Type CANNOT_CHANGE_VERSION |
| = new Type( Resources.cannotChangeVersion ); |
| |
| public final String msg; |
| |
| private Type( final String msg ) |
| { |
| this.msg = msg; |
| } |
| |
| private String getMessageTemplate() |
| { |
| return this.msg; |
| } |
| } |
| |
| private final Type type; |
| private final Object[] params; |
| |
| public ValidationProblem( final Type type, |
| final Object[] params ) |
| { |
| super( ERROR, FacetCorePlugin.PLUGIN_ID, 0, format( type, params ), |
| null ); |
| |
| this.type = type; |
| this.params = params; |
| } |
| |
| public ValidationProblem( final Type type ) |
| { |
| this( type, new Object[ 0 ] ); |
| } |
| |
| public ValidationProblem( final Type type, |
| final Object param ) |
| { |
| this( type, new Object[] { param } ); |
| } |
| |
| public ValidationProblem( final Type type, |
| final Object param1, |
| final Object param2 ) |
| { |
| this( type, new Object[] { param1, param2 } ); |
| } |
| |
| public ValidationProblem( final Type type, |
| final Object param1, |
| final Object param2, |
| final Object param3 ) |
| { |
| this( type, new Object[] { param1, param2, param3 } ); |
| } |
| |
| public Type getType() |
| { |
| return this.type; |
| } |
| |
| public Object[] getParameters() |
| { |
| return this.params; |
| } |
| |
| public boolean equals( final Object obj ) |
| { |
| if( ! ( obj instanceof ValidationProblem ) ) |
| { |
| return false; |
| } |
| else |
| { |
| final ValidationProblem prob = (ValidationProblem) obj; |
| |
| return this.type.equals( prob.type ) && |
| Arrays.equals( this.params, prob.params ); |
| } |
| } |
| |
| public int hashCode() |
| { |
| int hash = 0; |
| |
| for( int i = 0; i < this.params.length; i++ ) |
| { |
| hash = hash ^ this.params[ i ].hashCode(); |
| } |
| |
| return this.type.hashCode() ^ hash; |
| } |
| |
| public String toString() |
| { |
| return getMessage(); |
| } |
| |
| private static String format( final Type type, |
| final Object[] params ) |
| { |
| return MessageFormat.format( type.getMessageTemplate(), params ); |
| } |
| |
| private static final class Resources |
| |
| extends NLS |
| |
| { |
| public static String requires; |
| public static String requiresOneOfTwo; |
| public static String requiresGroup; |
| public static String oneof; |
| public static String complex; |
| public static String installNotSupported; |
| public static String uninstallNotSupported; |
| public static String versionChangeNotSupported; |
| public static String multipleActionsNotSupported; |
| public static String facetAlreadyInstalled; |
| public static String cannotUninstall; |
| public static String cannotChangeVersion; |
| |
| static |
| { |
| initializeMessages( ValidationProblem.class.getName(), |
| Resources.class ); |
| } |
| } |
| |
| } |