Ggrr - how to include simple small zips?

Here as inline:


--8-<-----8-<------8-<-----8-<------8-<-----8-<------8-<-----8-<----
package org.apache.tools.ant.taskdefs.optional;


import org.apache.tools.ant.Task;
import java.util.StringTokenizer;
import java.util.Vector;
import org.apache.tools.ant.BuildException;
import java.util.Iterator;


public class Sprintf extends Task {

    private String property;
    private String[] refids;
    private String format;
    private Class libraryAdapter;


    public void setProperty(String property) {
        this.property = property;
    }


    public void setRefids(String r) {
        Vector allRefids = new Vector();
        // split on ";"
        StringTokenizer tok1 = new StringTokenizer(r, ";");
        while (tok1.hasMoreTokens()) {
            StringTokenizer tok2 = new StringTokenizer(tok1.nextToken(),
":");
            while (tok2.hasMoreTokens()) {
                StringTokenizer tok3 = new StringTokenizer(tok2.nextToken(),
",");
                while (tok3.hasMoreTokens()) {
                    allRefids.add(tok3.nextToken());
                }
            }
        }
        refids = new String[allRefids.size()];
        int i=0;
        for (Iterator iter = allRefids.iterator(); iter.hasNext(); ) {
            refids[i] = (String) iter.next();
            i++;
        }
    }


    public void setFormat(String format) {
        this.format = format;
    }


    public void setLibraryAdapter(Class libraryAdapter) {
        this.libraryAdapter = libraryAdapter;
    }


    public void execute() {
        if (libraryAdapter==null) {
            throw new BuildException("Library Adapter not set.");
        }
        try {
            SprintfLibraryAdapter adapter = (SprintfLibraryAdapter)
libraryAdapter.newInstance();
            String[] values = new String[refids.length];
            for (int i = 0; i < refids.length; i++) {
                values[i] = getProject().getProperty(refids[i]);
            }
            String result = adapter.printf(format, values);
            getProject().setNewProperty(property, result);
        } catch (Exception ex) {
            ex.printStackTrace();
            throw new BuildException("Problem while initialising printf
library.", ex);
        }
    }

}
--8-<-----8-<------8-<-----8-<------8-<-----8-<------8-<-----8-<----
package org.apache.tools.ant.taskdefs.optional;

public interface SprintfLibraryAdapter {
    String printf(String format, String[] values);
}
package org.apache.tools.ant.taskdefs.optional;


/** Connects to printf library by http://www.braju.com/ */
public class SprintfLibraryBrajuAdapter implements SprintfLibraryAdapter {
    public String printf(String format, String[] values) {
        return com.braju.format.Format.sprintf(format, values);
    }
}
--8-<-----8-<------8-<-----8-<------8-<-----8-<------8-<-----8-<----
package org.apache.tools.ant.taskdefs.optional;

import org.apache.tools.ant.BuildFileTest;
import junit.framework.*;



public abstract class SprintfAbstractTestCase extends BuildFileTest {

    Sprintf printf;

    public SprintfAbstractTestCase(String s) {
        super(s);
        if (getProject()==null) {
            // I need a project instance for properties handling
            // maybe itīs not set by junit ???
            project = new org.apache.tools.ant.Project();
        }
    }

    public abstract Class getAdapter();


    public void setUp() {
        getProject().setProperty("string-1", "string-1");
        getProject().setProperty("string-2", "string-2");
        getProject().setProperty("boolean-1", "true");
        getProject().setProperty("boolean-2", "false");
        getProject().setProperty("number-1", "1");
        getProject().setProperty("number-2", "22");
        getProject().setProperty("number-3", "333");

        printf = new Sprintf();
        printf.setProject(getProject());
        printf.setLibraryAdapter(getAdapter());
        printf.setProperty("output");
    }



    public void testString() {
        assertEquals("string-1", printf("%s", "string-1"));
    }

    public void testMultipleString() {
        assertEquals("string-1::string-2", printf("%s::%s",
"string-1,string-2"));
    }

    public void testSeparator() {
        assertEquals("string-1::string-2", printf("%s::%s",
"string-1,string-2"));
        assertEquals("string-1::string-2", printf("%s::%s",
"string-1;string-2"));
        assertEquals("string-1::string-2", printf("%s::%s",
"string-1:string-2"));
    }

    public void testBoolean() {
        assertEquals("true", printf("%I", "boolean-1"));
    }

    public void testMultipleBoolean() {
        assertEquals("true::false", printf("%I::%I",
"boolean-1,boolean-2"));
    }

    public void testNumber() {
        assertEquals("1", printf("%d", "number-1"));
    }

    public void testMultipleNumber() {
        assertEquals("1::22", printf("%d::%d", "number-1,number-2"));
    }



    //

    private String printf(String format, String refids) {
        printf.setFormat(format);
        printf.setRefids(refids);
        printf.execute();
        return getProject().getProperty("output");
    }



}
--8-<-----8-<------8-<-----8-<------8-<-----8-<------8-<-----8-<----
package org.apache.tools.ant.taskdefs.optional;

public class SprintfBrajuTest extends SprintfAbstractTestCase {
    public SprintfBrajuTest(String s) {
        super(s);
    }
    public Class getAdapter() {
        return
org.apache.tools.ant.taskdefs.optional.SprintfLibraryBrajuAdapter.class;
    }
}
--8-<-----8-<------8-<-----8-<------8-<-----8-<------8-<-----8-<----
<?xml version="1.0" encoding="ISO-8859-1"?>
<project name="sprintf" basedir="." default="use">

    <property name="printf.lib" value="braju-printf.jar"/>
    <property name="task.lib" value="${ant.project.name}-task.jar"/>
    <property name="src.dir" value="src"/>
    <property name="build.dir" value="build"/>
    <property name="classes.dir" value="${build.dir}/classes"/>
    <property name="junit.out.dir.xml" value="${build.dir}/junit"/>
    <property name="junit.out.dir.html" value="${build.dir}/junit"/>

    <path id="cp">
        <pathelement path="${classes.dir}"/>
        <pathelement location="${printf.lib}"/>
    </path>

    <target name="clean">
        <delete dir="${build.dir}" failonerror="false"/>
        <delete file="${ant.home}/lib/${task.lib}"/>
    </target>

    <target name="compile">
        <mkdir dir="${classes.dir}"/>
        <javac srcdir="${src.dir}" destdir="${classes.dir}"
classpathref="cp"/>
    </target>

    <target name="jar" depends="compile">
        <property name="jar.dir" value="${build.dir}/jar"/>
        <delete dir="${jar.dir}" failonerror="false"/>
        <mkdir dir="${jar.dir}"/>
        <unzip src="${printf.lib}" dest="${jar.dir}"/>
        <copy todir="${jar.dir}"><fileset dir="${classes.dir}"
excludes="package cache"/></copy>
        <jar destfile="${task.lib}" basedir="${jar.dir}"/>
        <copy file="${task.lib}" todir="${ant.home}/lib"/>
    </target>

    <target name="junit">
        <delete dir="${junit.out.dir.xml}" />
        <mkdir  dir="${junit.out.dir.xml}" />
        <junit printsummary="yes" haltonfailure="no">
            <classpath refid="cp"/>
            <formatter type="xml"/>
            <batchtest fork="yes" todir="${junit.out.dir.xml}">
                <fileset dir="src/testcases">
                    <include name="**/*Test.java"/>
                </fileset>
            </batchtest>
        </junit>
    </target>

    <target name="junitreport">
        <mkdir dir="${junit.out.dir.html}" />
        <junitreport todir="${junit.out.dir.html}">
            <fileset dir="${junit.out.dir.xml}">
                <include name="*.xml"/>
            </fileset>
            <report format="frames" todir="${junit.out.dir.html}"/>
        </junitreport>
    </target>

    <target name="use">
        <taskdef name="sprintf"
                 classname="org.apache.tools.ant.taskdefs.optional.Sprintf"
        />
        <property name="year" value="2003"/>
        <property name="month" value="9"/>
        <property name="day" value="5"/>
        <property name="format" value="%04s-%02s-%02s"/>

        <sprintf property="output"
                 refids="year,month,day"
                    format="${format}"
 
libraryAdapter="org.apache.tools.ant.taskdefs.optional.SprintfLibraryBrajuAd
apter"
        />

        <echo>Year     ${year}</echo>
        <echo>Month    ${month}</echo>
        <echo>Day      ${day}</echo>
        <echo>Format   ${format}</echo>
        <echo> </echo>
        <echo>Output   ${output}</echo>
    </target>

</project>
--8-<-----8-<------8-<-----8-<------8-<-----8-<------8-<-----8-<----
C:.
|   braju-printf.jar   (the downloaded zip renamed to jar)
|   build.xml
|               
\---src
    +---main
    |   \---org
    |       \---apache
    |           \---tools
    |               \---ant
    |                   \---taskdefs
    |                       \---optional
    |                               Sprintf.java
    |                               SprintfLibraryAdapter.java
    |                               SprintfLibraryBrajuAdapter.java
    |                               
    \---testcases
        \---org
            \---apache
                \---tools
                    \---ant
                        \---taskdefs
                            \---optional
                                    SprintfAbstractTestCase.java
                                    SprintfBrajuTest.java
--8-<-----8-<------8-<-----8-<------8-<-----8-<------8-<-----8-<----



Jan


-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
Sent: Friday, September 05, 2003 12:46 PM
To: [EMAIL PROTECTED]
Subject: <sprintf> (WAS: RE: [SUBMIT] optional task <propertyformatter>)


Hmm, attachement didnīt come through ... 
Once again: 
- sprintf.zip (7kB) containing buildfile and sources (impl and test) 


Jan 

Reply via email to