package org.bundlemaker.core.analysis; import org.bundlemaker.core.common.ResourceType; import org.eclipse.core.runtime.Assert; import com.google.gson.annotations.Expose; import com.google.gson.annotations.SerializedName; /** * <p> * Defines the configuration of an analysis model. * </p> * * @author Gerd Wütherich (gerd@gerd-wuetherich.de) */ public class AnalysisModelConfiguration implements IAnalysisModelConfiguration { /** the content type to show */ @Expose @SerializedName("contentType") private ResourceType _contentType = ResourceType.SOURCE; /** whether the packages should be hierarchical or flat */ @Expose @SerializedName("hierarchicalPackages") private boolean _hierarchicalPackages = true; /** whether to include missing types or not */ @Expose @SerializedName("includeVirtualModuleForMissingTypes") private boolean _includeVirtualModuleForMissingTypes = false; /** * <p> * Creates a new instance of type {@link AnalysisModelConfiguration}. * </p> * */ public AnalysisModelConfiguration() { super(); } /** * <p> * Creates a new instance of type {@link AnalysisModelConfiguration}. * </p> * * @param hierarchical * @param contentType * @param resourcePresentation */ public AnalysisModelConfiguration(boolean hierarchical, ResourceType contentType, boolean includeVirtualModuleForMissingTypes) { Assert.isNotNull(contentType); _hierarchicalPackages = hierarchical; _contentType = contentType; _includeVirtualModuleForMissingTypes = includeVirtualModuleForMissingTypes; } /** * <p> * Returns the {@link ResourceType} of this configuration. * </p> * * @return */ public final ResourceType getContentType() { return _contentType; } /** * <p> * </p> * * @return */ public final boolean isHierarchicalPackages() { return _hierarchicalPackages; } /** * <p> * </p> * * @return */ public final boolean isIncludeVirtualModuleForMissingTypes() { return _includeVirtualModuleForMissingTypes; } /** * {@inheritDoc} */ @Override public final boolean isSourceContent() { return _contentType.equals(ResourceType.SOURCE); } /** * {@inheritDoc} */ @Override public final boolean isBinaryContent() { return _contentType.equals(ResourceType.BINARY); } // /** // * <p> // * </p> // * // * @param hierarchical // */ // public final void setHierarchicalPackages(boolean hierarchical) { // _hierarchicalPackages = hierarchical; // } // // /** // * <p> // * Sets the content type of this configuration. // * </p> // * // * @param contentType // */ // public final void setContentType(ProjectContentType contentType) { // Assert.isNotNull(contentType); // // _contentType = contentType; // } // // /** // * <p> // * </p> // * // * @param includeVirtualModuleForMissingTypes // */ // public final void setIncludeVirtualModuleForMissingTypes(boolean includeVirtualModuleForMissingTypes) { // _includeVirtualModuleForMissingTypes = includeVirtualModuleForMissingTypes; // } /** * {@inheritDoc} */ @Override public String toString() { return _contentType.getShortDescription() + "_" + prefix(_hierarchicalPackages, "Hi") + "_" + prefix(_includeVirtualModuleForMissingTypes, "MiTy"); } /** * {@inheritDoc} */ @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((_contentType == null) ? 0 : _contentType.hashCode()); result = prime * result + (_hierarchicalPackages ? 1231 : 1237); result = prime * result + (_includeVirtualModuleForMissingTypes ? 1231 : 1237); return result; } /** * {@inheritDoc} */ @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; AnalysisModelConfiguration other = (AnalysisModelConfiguration) obj; if (_contentType != other._contentType) return false; if (_hierarchicalPackages != other._hierarchicalPackages) return false; if (_includeVirtualModuleForMissingTypes != other._includeVirtualModuleForMissingTypes) return false; return true; } /** * <p> * </p> * * @param value * @param string * @return */ private String prefix(boolean value, String string) { return value ? string : "Non" + string; } }