blob: 9dd7395291f03a8d2c8ca30bff12dbb7cf913e5c [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008, 2012 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
* Martin Oberhuber (Wind River) - [276255] fix insertion of extra space chars
* Martin Oberhuber (Wind River) - [234872] avoid rem's that echo to the console
*******************************************************************************/
package org.eclipse.releng.tools;
import java.io.PrintWriter;
import java.util.Calendar;
public abstract class CopyrightComment {
public static final int UNKNOWN_COMMENT = -1;
public static final int JAVA_COMMENT = 1;
public static final int PROPERTIES_COMMENT = 2;
public static final int C_COMMENT = 3;
public static final int SHELL_MAKE_COMMENT = 4;
public static final int BAT_COMMENT = 5;
public static final int JAVASCRIPT_COMMENT = 6;
public static final int XML_COMMENT = 7;
private int commentStyle;
private int creationYear = -1;
private int revisionYear = -1;
private String lineDelimiter;
protected CopyrightComment(int commentStyle, int creationYear, int revisionYear) {
this.commentStyle = commentStyle;
this.creationYear = creationYear == -1 ? (Calendar.getInstance().get(Calendar.YEAR)) : creationYear;
this.revisionYear = revisionYear;
}
public static String getLinePrefix(int commentStyle) {
switch(commentStyle) {
case JAVA_COMMENT:
case C_COMMENT:
case JAVASCRIPT_COMMENT:
return " *"; //$NON-NLS-1$
case PROPERTIES_COMMENT:
return "#"; //$NON-NLS-1$
case SHELL_MAKE_COMMENT:
return "#"; //$NON-NLS-1$
case BAT_COMMENT:
return "@rem"; //$NON-NLS-1$
case XML_COMMENT:
return " "; //$NON-NLS-1$
default:
return null;
}
}
protected void writeCommentStart(PrintWriter writer) {
switch(commentStyle) {
case JAVA_COMMENT:
case C_COMMENT:
case JAVASCRIPT_COMMENT:
println(writer, "/*******************************************************************************"); //$NON-NLS-1$
break;
case PROPERTIES_COMMENT:
println(writer, "###############################################################################"); //$NON-NLS-1$
break;
case SHELL_MAKE_COMMENT:
println(writer, "#*******************************************************************************"); //$NON-NLS-1$
break;
case BAT_COMMENT:
println(writer, "@rem ***************************************************************************"); //$NON-NLS-1$
break;
case XML_COMMENT:
println(writer, "<!--"); //$NON-NLS-1$
break;
}
}
protected void writeCommentEnd(PrintWriter writer) {
switch(commentStyle) {
case JAVA_COMMENT:
case C_COMMENT:
case JAVASCRIPT_COMMENT:
println(writer, " *******************************************************************************/"); //$NON-NLS-1$
break;
case PROPERTIES_COMMENT:
println(writer, "###############################################################################"); //$NON-NLS-1$
break;
case SHELL_MAKE_COMMENT:
println(writer, "#*******************************************************************************"); //$NON-NLS-1$
break;
case BAT_COMMENT:
println(writer, "@rem ***************************************************************************"); //$NON-NLS-1$
break;
case XML_COMMENT:
println(writer, " -->"); //$NON-NLS-1$
break;
}
}
public int getRevisionYear() {
return revisionYear == -1 ? creationYear : revisionYear;
}
public boolean hasRevisionYear() {
return revisionYear != -1;
}
public void setRevisionYear(int year) {
if (revisionYear != -1 || creationYear != year)
revisionYear = year;
}
/**
* @param lineDelimiter
* @since 3.7
*/
public void setLineDelimiter(String lineDelimiter) {
this.lineDelimiter= lineDelimiter;
}
public int getCreationYear() {
return creationYear;
}
public String getCommentPrefix() {
return getLinePrefix(commentStyle);
}
public abstract String getCopyrightComment();
/**
* @since 3.7
*/
protected void println(PrintWriter writer, String line) {
writer.print(line);
writer.print(lineDelimiter);
}
}