// Copyright (c) 2003-2008 by Leif Frenzel - see http://leiffrenzel.de
package net.sf.eclipsefp.haskell.core.internal.project;
/**
* <p>
* contains naming constants and default XML generator functionality for the
* <code>.hsproject</code> file that belongs to each Haskell project in the
* workspace and provides information about path settings etc.
* </p>
*
* @author Leif Frenzel
*
*/
@Deprecated
public class DescriptorFile implements IXMLNames {
private static final String OPEN_TAG = "<haskellProject>"; //$NON-NLS-1$
private static final String CLOSE_TAG = "</haskellProject>"; //$NON-NLS-1$
private static final String XML_PREFIX = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; //$NON-NLS-1$
private static final String NL = "\n"; //$NON-NLS-1$
private static final String INDENT = " "; //$NON-NLS-1$
private String fSourcePath;
// private String fOutputPath;
// private String fTargetName;
private final String fCompiler;
DescriptorFile(final String sourcePath,// final String outputPath,
//final String targetName,
final String compiler)
{
fSourcePath = sourcePath;
// fOutputPath = outputPath;
// fTargetName = targetName;
fCompiler = compiler;
}
/**
* <p>
* returns the XML representation of this DescriptorFile object, in order to
* write it to the .hsproject file.
* </p>
*/
String toXML() {
StringBuffer result = new StringBuffer( XML_PREFIX );
result.append( NL );
result.append( OPEN_TAG );
result.append( NL );
renderTag( result, SOURCE_PATH_ELEMENT, PATH_ATT, fSourcePath );
// renderTag( result, OUTPUT_PATH_ELEMENT, PATH_ATT, fOutputPath );
// renderTag( result, TARGET_NAME_ELEMENT, NAME_ATT, fTargetName );
result.append( "<" ); //$NON-NLS-1$
result.append( COMPILER_ELEMENT );
result.append( ">" ); //$NON-NLS-1$
result.append( fCompiler );
result.append( "</" ); //$NON-NLS-1$
result.append( COMPILER_ELEMENT );
result.append( ">" ); //$NON-NLS-1$
result.append( CLOSE_TAG );
result.append( NL );
return result.toString();
}
void setSourcePath( final String sourcePath ) {
fSourcePath = sourcePath;
}
/*void setOutputPath( final String outputPath ) {
fOutputPath = outputPath;
}
void setTargetName( final String targetName ) {
fTargetName = targetName;
}
*/
public static String createDescriptorContent( final String sourcePath,
//final String outputPath, final String targetName,
final String compiler ) {
return new DescriptorFile( sourcePath, //outputPath, targetName,
compiler ).toXML();
}
public static String createEmptyDescriptorContent() {
return createDescriptorContent( "", "" ); //$NON-NLS-1$ //$NON-NLS-2$
}
// helping methods
// ////////////////
private void renderTag( final StringBuffer result, final String tagName,
final String attName, final String value ) {
result.append( INDENT );
result.append( "<" ); //$NON-NLS-1$
result.append( tagName );
result.append( " " ); //$NON-NLS-1$
result.append( attName );
result.append( "=\"" ); //$NON-NLS-1$
result.append( value );
result.append( "\"/>" ); //$NON-NLS-1$
result.append( NL );
}
}