/*******************************************************************************
* Copyright (c) 2010-2014 SAP AG and others.
* 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:
* SAP AG - initial API and implementation
*******************************************************************************/
package org.eclipse.skalli.model.ext.linkgroups.internal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.eclipse.skalli.commons.Link;
import org.eclipse.skalli.model.ext.linkgroups.LinkGroup;
import org.eclipse.skalli.model.ext.linkgroups.LinkGroupValidator;
import org.eclipse.skalli.model.ext.linkgroups.LinkGroupsProjectExt;
import org.eclipse.skalli.services.extension.ExtensionService;
import org.eclipse.skalli.services.extension.ExtensionServiceBase;
import org.eclipse.skalli.services.extension.Indexer;
import org.eclipse.skalli.services.extension.PropertyValidator;
import org.eclipse.skalli.services.extension.rest.RestConverter;
import org.osgi.service.component.ComponentContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ExtensionServiceLinkGroups
extends ExtensionServiceBase<LinkGroupsProjectExt>
implements ExtensionService<LinkGroupsProjectExt>
{
private static final Logger LOG = LoggerFactory.getLogger(ExtensionServiceLinkGroups.class);
private static final String CAPTION = "Additional Links";
private static final String DESCRIPTION = "Information related to the project that is maintained elsewhere and linkable.";
@Override
public Class<LinkGroupsProjectExt> getExtensionClass() {
return LinkGroupsProjectExt.class;
}
@Override
public LinkGroupsProjectExt newExtension() {
return new LinkGroupsProjectExt();
}
protected void activate(ComponentContext context) {
LOG.info("activated model extension: " + getShortName()); //$NON-NLS-1$
}
protected void deactivate(ComponentContext context) {
LOG.info("deactivated model extension: " + getShortName()); //$NON-NLS-1$
}
@Override
public String getShortName() {
return "linkGroups"; //$NON-NLS-1$
}
@Override
public String getCaption() {
return CAPTION;
}
@Override
public String getDescription() {
return DESCRIPTION;
}
@Override
public Map<String, Class<?>> getAliases() {
Map<String, Class<?>> aliases = super.getAliases();
aliases.put("linkGroup", LinkGroup.class); //$NON-NLS-1$
aliases.put("link", Link.class); //$NON-NLS-1$
return aliases;
}
@Deprecated
@Override
public RestConverter getRestConverter(String host) {
return new LinkGroupsConverter(host);
}
@Override
public RestConverter<LinkGroupsProjectExt> getRestConverter() {
return new LinkGroupsConverter();
}
@Override
public String getModelVersion() {
return LinkGroupsProjectExt.MODEL_VERSION;
}
@Override
public String getNamespace() {
return LinkGroupsProjectExt.NAMESPACE;
}
@Override
public String getXsdFileName() {
return "linksgroups.xsd"; //$NON-NLS-1$
}
@Override
public Indexer<LinkGroupsProjectExt> getIndexer() {
return new LinkGroupsIndexer();
}
@Override
public List<PropertyValidator> getPropertyValidators(String propertyName, String caption) {
List<PropertyValidator> validators = new ArrayList<PropertyValidator>();
if (LinkGroupsProjectExt.PROPERTY_LINKGROUPS.equals(propertyName)) {
validators.add(new LinkGroupValidator(getExtensionClass(), propertyName));
}
return validators;
}
}