/******************************************************************************* * Copyright (c) 2006-2010 eBay Inc. All Rights Reserved. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 *******************************************************************************/ /** * */ package org.ebayopensource.turmeric.eclipse.errorlibrary.resources.model; import java.util.ArrayList; import java.util.List; import org.ebayopensource.turmeric.eclipse.core.logging.SOALogger; import org.ebayopensource.turmeric.eclipse.core.resources.constants.SOAProjectConstants; import org.ebayopensource.turmeric.eclipse.core.resources.constants.SOAProjectConstants.SupportedProjectType; import org.ebayopensource.turmeric.eclipse.errorlibrary.providers.ErrorLibraryProviderFactory; import org.ebayopensource.turmeric.eclipse.exception.resources.SOAGetErrorLibraryProviderFailedException; import org.ebayopensource.turmeric.eclipse.repositorysystem.core.GlobalRepositorySystem; import org.ebayopensource.turmeric.eclipse.resources.model.AbstractSOAMetadata; import org.ebayopensource.turmeric.eclipse.resources.model.SOABaseProject; import org.ebayopensource.turmeric.eclipse.resources.model.SOAProjectEclipseMetadata; import org.eclipse.jdt.core.JavaCore; /** * The Class SOAErrorLibraryProject. * * @author yayu */ public class SOAErrorLibraryProject extends SOABaseProject { private static final String[] SOURCE_DIRECTORIES = { SOAProjectConstants.FOLDER_DOT }; /** * Instantiates a new sOA error library project. */ public SOAErrorLibraryProject() { super(); final List<SOAProjectSourceDirectory> sourceDirectories = new ArrayList<SOAProjectSourceDirectory>(); for (final String srcDir : SOURCE_DIRECTORIES) { sourceDirectories.add(new SOAProjectSourceDirectory(srcDir)); } setSourceDirectories(sourceDirectories); addEclipseNature(GlobalRepositorySystem.instanceOf().getActiveRepositorySystem() .getProjectNatureId(SupportedProjectType.ERROR_LIBRARY)); addEclipseNature(JavaCore.NATURE_ID); } /** * Sets the error library metadata. * * @param metadata the new error library metadata */ public void setErrorLibraryMetadata(SOAErrorLibraryMetadata metadata) { this.setMetadata(metadata); } /** * Gets the error library metadata. * * @return the error library metadata */ public SOAErrorLibraryMetadata getErrorLibraryMetadata() { final AbstractSOAMetadata metadata = super.getMetadata(); return metadata instanceof SOAErrorLibraryMetadata ? (SOAErrorLibraryMetadata) metadata : null; } /** * Creates the soa project error library. * * @param eclipseMetadata the eclipse metadata * @param metadata the metadata * @return the sOA error library project */ public static SOAErrorLibraryProject createSOAProjectErrorLibrary( SOAProjectEclipseMetadata eclipseMetadata, SOAErrorLibraryMetadata metadata) { SOAErrorLibraryProject soaErrorLibraryProject = new SOAErrorLibraryProject(); soaErrorLibraryProject.setEclipseMetadata(eclipseMetadata); soaErrorLibraryProject.setErrorLibraryMetadata(metadata); return soaErrorLibraryProject; } /* (non-Javadoc) * @see org.ebayopensource.turmeric.eclipse.resources.model.SOABaseProject#getSOAMetadataClass() */ @Override protected Class<? extends AbstractSOAMetadata> getSOAMetadataClass() { return SOAErrorLibraryMetadata.class; } /* (non-Javadoc) * @see org.ebayopensource.turmeric.eclipse.resources.model.SOABaseProject#getSourceSubFolders() */ @Override public List<String> getSourceSubFolders() { List<String> srcDirs = new ArrayList<String>(); try { srcDirs = ErrorLibraryProviderFactory.getInstance().getPreferredProvider().getSourceSubFolders(this); } catch (SOAGetErrorLibraryProviderFailedException e) { SOALogger.getLogger().error(e); } return srcDirs; } /** * {@inheritDoc} */ @Override public List<String> getSourceDirectoryNames() { List<String> srcDirs = new ArrayList<String>(); for (SOAProjectSourceDirectory dir : getSourceDirectories()) { srcDirs.add(dir.getLocation()); } return srcDirs; } }