/******************************************************************************* * Copyright (c) 2013 itemis AG (http://www.itemis.eu). * 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 ******************************************************************************/ package de.itemis.tooling.terminology.generator; import java.util.List; import org.eclipse.xtext.xbase.lib.Pair; import com.google.common.base.Objects; import de.itemis.tooling.terminology.terminology.SubjectEntries; public abstract class TerminologyGeneratorParticipant { private String id; private String defaultFolder; private String displayName; private String folder; private boolean active; protected TerminologyGeneratorParticipant(String id, String displayName, String defaultFolder) { this.id=id; this.displayName=displayName; this.defaultFolder=defaultFolder; this.folder=defaultFolder; } /** * provide a list filename->content for the given catagory * files are written to <Compiler-output-folder>/<TerminologyName>/<folder>/<file> * where folder is the folder configured for this generator and file is the * key element of the return values * */ public abstract List<Pair<String, CharSequence>> getFileContents(SubjectEntries entries); /** * default folder in which the files are placed * */ public final String getDefaultFolder(){ return defaultFolder; } /** * Display name of the generator (shown in the complier preference page) * */ public final String getDisplayName(){ return displayName; } /** * id of this generator * */ public final String getId(){ return id; } public final void setFolder(String folder) { this.folder = folder; } public final String getFolder() { if(folder!=null&&folder.length()>0){ //we do not want any navigation to parent folders int i=0; while(i<folder.length() &&!Character.isLetterOrDigit(folder.charAt(i))){ i++; } folder=folder.substring(i); } return folder; } public final void setActive(boolean active) { this.active = active; } public final boolean isActive() { return active; } @Override public final String toString() { return Objects.toStringHelper(getClass()).add("id", getId()).add("active", isActive()).add("folder", getFolder()).toString(); } }