[Yanel-dev] Re: [Yanel-commits] rev 22914 - in public/yanel/trunk/src/realms: use-cases/yanel/rti welcome-admin/yanel/resources welcome-admin/yanel/resources/update-webapp welcome-admin/yanel/resources/update-webapp/build welcome-admin/yanel/resources/update-webapp/build/classes welcome-admin/yanel/resources/update-webapp/build/classes/org welcome-admin/yanel/resources/update-webapp/build/classes/org/wyona welcome-admin/yanel/resources/update-webapp/build/classes/org/wyona/yanel welcome-admin/yanel/resources/update-webapp/build/classes/org/wyona/yanel/impl welcome-admin/yanel/resources/update-webapp/build/classes/org/wyona/yanel/impl/resources welcome-admin/yanel/resources/update-webapp/build/lib welcome-admin/yanel/resources/update-webapp/config welcome-admin/yanel/resources/update-webapp/rdf welcome-admin/yanel/resources/update-webapp/src welcome-admin/yanel/resources/update-webapp/src/build welcome-admin/yanel/resources/update-webapp/src/java welcome-admin/yanel/resources/update-webapp/src/java/org welcome-admin/yanel/resources/update-webapp/src/java/org/wyona welcome-admin/yanel/resources/update-webapp/src/java/org/wyona/yanel welcome-admin/yanel/resources/update-webapp/src/java/org/wyona/yanel/impl welcome-admin/yanel/resources/update-webapp/src/java/org/wyona/yanel/impl/resources welcome-admin/yanel/resources/update-webapp/xslt

Michael Wechner michael.wechner at wyona.com
Fri Feb 23 17:11:36 CET 2007


Josias Thöny wrote:

> Hi,
>
> michi at wyona.com wrote:
>
>> Author: michi
>> Date: 2007-02-23 15:12:04 +0100 (Fri, 23 Feb 2007)
>> New Revision: 22914
>>
>> Added:
>>    
>> public/yanel/trunk/src/realms/use-cases/yanel/rti/update-webapp.html.yanel-rc 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/ 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build.xml 
>>
>
>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build/ 
>>
>
>
> Did you check in the build dir on purpose?


oops, sorry for that. Will delete it note it as svn:ignore.

Thanks for the hint :-)

Michi

> It's causing some problems with my svn when I build and then try to do 
> svn up.
>
> Josias
>
>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build/classes/ 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build/classes/org/ 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build/classes/org/wyona/ 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build/classes/org/wyona/yanel/ 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build/classes/org/wyona/yanel/impl/ 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build/classes/org/wyona/yanel/impl/resources/ 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build/classes/org/wyona/yanel/impl/resources/InstallRDF.class 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build/classes/org/wyona/yanel/impl/resources/UpdateRDF$UpdateVersions.class 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build/classes/org/wyona/yanel/impl/resources/UpdateRDF.class 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build/classes/org/wyona/yanel/impl/resources/UpdateResource.class 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build/classes/org/wyona/yanel/impl/resources/VersionComparator$1.class 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build/classes/org/wyona/yanel/impl/resources/VersionComparator$VersionPart.class 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build/classes/org/wyona/yanel/impl/resources/VersionComparator.class 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build/classes/org/wyona/yanel/impl/resources/VersionPartTokenizer.class 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build/lib/ 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build/lib/yanel-resource-update-0.0.1-dev-rXXX.jar 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/config/ 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/config/update_de.properties 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/config/update_en.properties 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/rdf/ 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/rdf/install.rdf 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/rdf/update.rdf 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/resource.xml 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/ 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/build/ 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/build/build.properties 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/build/dependencies.xml 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/java/ 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/java/org/ 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/java/org/wyona/ 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/java/org/wyona/yanel/ 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/java/org/wyona/yanel/impl/ 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/java/org/wyona/yanel/impl/resources/ 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/java/org/wyona/yanel/impl/resources/InstallRDF.java 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/java/org/wyona/yanel/impl/resources/UpdateRDF.java 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/java/org/wyona/yanel/impl/resources/UpdateResource.java 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/java/org/wyona/yanel/impl/resources/VersionComparator.java 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/test/ 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/xslt/ 
>>
>>    
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/xslt/update.xsl 
>>
>> Log:
>> update webapp resource added
>>
>> Added: 
>> public/yanel/trunk/src/realms/use-cases/yanel/rti/update-webapp.html.yanel-rc 
>>
>> ===================================================================
>> --- 
>> public/yanel/trunk/src/realms/use-cases/yanel/rti/update-webapp.html.yanel-rc    
>> 2007-02-23 14:08:18 UTC (rev 22913)
>> +++ 
>> public/yanel/trunk/src/realms/use-cases/yanel/rti/update-webapp.html.yanel-rc    
>> 2007-02-23 14:12:04 UTC (rev 22914)
>> @@ -0,0 +1,5 @@
>> +<?xml version="1.0"?>
>> +
>> +<yanel:resource-config 
>> xmlns:yanel="http://www.wyona.org/yanel/rti/1.0">
>> +  <yanel:rti name="update-webapp" 
>> namespace="http://www.wyona.org/yanel/resource/1.0"/>
>> +</yanel:resource-config>
>>
>> Added: 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build/classes/org/wyona/yanel/impl/resources/InstallRDF.class 
>>
>> ===================================================================
>> (Binary files differ)
>>
>>
>> Property changes on: 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build/classes/org/wyona/yanel/impl/resources/InstallRDF.class 
>>
>> ___________________________________________________________________
>> Name: svn:mime-type
>>    + application/octet-stream
>>
>> Added: 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build/classes/org/wyona/yanel/impl/resources/UpdateRDF$UpdateVersions.class 
>>
>> ===================================================================
>> (Binary files differ)
>>
>>
>> Property changes on: 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build/classes/org/wyona/yanel/impl/resources/UpdateRDF$UpdateVersions.class 
>>
>> ___________________________________________________________________
>> Name: svn:mime-type
>>    + application/octet-stream
>>
>> Added: 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build/classes/org/wyona/yanel/impl/resources/UpdateRDF.class 
>>
>> ===================================================================
>> (Binary files differ)
>>
>>
>> Property changes on: 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build/classes/org/wyona/yanel/impl/resources/UpdateRDF.class 
>>
>> ___________________________________________________________________
>> Name: svn:mime-type
>>    + application/octet-stream
>>
>> Added: 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build/classes/org/wyona/yanel/impl/resources/UpdateResource.class 
>>
>> ===================================================================
>> (Binary files differ)
>>
>>
>> Property changes on: 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build/classes/org/wyona/yanel/impl/resources/UpdateResource.class 
>>
>> ___________________________________________________________________
>> Name: svn:mime-type
>>    + application/octet-stream
>>
>> Added: 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build/classes/org/wyona/yanel/impl/resources/VersionComparator$1.class 
>>
>> ===================================================================
>> (Binary files differ)
>>
>>
>> Property changes on: 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build/classes/org/wyona/yanel/impl/resources/VersionComparator$1.class 
>>
>> ___________________________________________________________________
>> Name: svn:mime-type
>>    + application/octet-stream
>>
>> Added: 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build/classes/org/wyona/yanel/impl/resources/VersionComparator$VersionPart.class 
>>
>> ===================================================================
>> (Binary files differ)
>>
>>
>> Property changes on: 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build/classes/org/wyona/yanel/impl/resources/VersionComparator$VersionPart.class 
>>
>> ___________________________________________________________________
>> Name: svn:mime-type
>>    + application/octet-stream
>>
>> Added: 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build/classes/org/wyona/yanel/impl/resources/VersionComparator.class 
>>
>> ===================================================================
>> (Binary files differ)
>>
>>
>> Property changes on: 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build/classes/org/wyona/yanel/impl/resources/VersionComparator.class 
>>
>> ___________________________________________________________________
>> Name: svn:mime-type
>>    + application/octet-stream
>>
>> Added: 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build/classes/org/wyona/yanel/impl/resources/VersionPartTokenizer.class 
>>
>> ===================================================================
>> (Binary files differ)
>>
>>
>> Property changes on: 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build/classes/org/wyona/yanel/impl/resources/VersionPartTokenizer.class 
>>
>> ___________________________________________________________________
>> Name: svn:mime-type
>>    + application/octet-stream
>>
>> Added: 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build/lib/yanel-resource-update-0.0.1-dev-rXXX.jar 
>>
>> ===================================================================
>> (Binary files differ)
>>
>>
>> Property changes on: 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build/lib/yanel-resource-update-0.0.1-dev-rXXX.jar 
>>
>> ___________________________________________________________________
>> Name: svn:mime-type
>>    + application/octet-stream
>>
>> Added: 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build.xml 
>>
>> ===================================================================
>> --- 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build.xml    
>> 2007-02-23 14:08:18 UTC (rev 22913)
>> +++ 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/build.xml    
>> 2007-02-23 14:12:04 UTC (rev 22914)
>> @@ -0,0 +1,52 @@
>> +<?xml version="1.0"?>
>> +
>> +<project name="yanel-resource" default="compile">
>> +
>> +  <import file="src/build/dependencies.xml"/>
>> +
>> +  <target name="init" description="Initialize build" 
>> depends="dependencies">
>> +    <echo>Initialize build</echo>
>> +
>> +    <dirname property="resource.home.dir" file="${ant.file}"/>
>> +    <echo>Resource Home Directory: ${resource.home.dir}</echo>
>> +
>> +    <property 
>> file="${resource.home.dir}/src/build/local.build.properties"/>
>> +    <property file="${resource.home.dir}/src/build/build.properties"/>
>> +
>> +    <path id="classpath">
>> +      <pathelement path="${maven2.cp}"/>
>> +    </path>
>> +    <property name="resource.build.dir" 
>> value="${resource.home.dir}/build"/>
>> +    <property name="resource.classes.dir" 
>> value="${resource.build.dir}/classes"/>
>> +    <property name="resource.lib.dir" 
>> value="${resource.build.dir}/lib"/>
>> +    <property name="resource.java.dir" 
>> value="${resource.home.dir}/src/java"/>
>> +  </target>
>> +
>> +  <target name="compile" description="Compile Java classes" 
>> depends="init">
>> +
>> +    <mkdir dir="${resource.classes.dir}"/>
>> +    <javac srcdir="${resource.java.dir}" 
>> destdir="${resource.classes.dir}"
>> +      classpathref="classpath"
>> +      debug="true"
>> +    />
>> +    <mkdir dir="${resource.lib.dir}"/>
>> +    <jar 
>> destfile="${resource.lib.dir}/yanel-resource-${resource.name}-${resource.version}.jar" 
>>
>> +      basedir="${resource.classes.dir}"
>> +    />
>> +  </target>
>> +
>> +  <target name="clean" depends="init">
>> +    <delete dir="${resource.build.dir}"/>
>> +  </target>
>> +
>> +  <target name="copy-dependencies" depends="init">
>> +    <copy 
>> todir="${build.dir}/webapps/${servlet.context.prefix}/WEB-INF/lib">
>> +      <fileset refid="maven2.resource.fileset"/>
>> +      <mapper type="flatten"/>
>> +    </copy>
>> +    +    <copy 
>> todir="${build.dir}/webapps/${servlet.context.prefix}/WEB-INF/classes">
>> +      <fileset dir="config" includes="update_*.properties"/>
>> +    </copy>
>> +  </target>
>> +</project>
>>
>> Added: 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/config/update_de.properties 
>>
>> ===================================================================
>> --- 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/config/update_de.properties    
>> 2007-02-23 14:08:18 UTC (rev 22913)
>> +++ 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/config/update_de.properties    
>> 2007-02-23 14:12:04 UTC (rev 22914)
>> @@ -0,0 +1 @@
>> +checkupdtae = Check for Update
>>
>> Added: 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/config/update_en.properties 
>>
>> ===================================================================
>> --- 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/config/update_en.properties    
>> 2007-02-23 14:08:18 UTC (rev 22913)
>> +++ 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/config/update_en.properties    
>> 2007-02-23 14:12:04 UTC (rev 22914)
>> @@ -0,0 +1 @@
>> +checkupdtae = Check for Update
>>
>> Added: 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/rdf/install.rdf 
>>
>> ===================================================================
>> --- 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/rdf/install.rdf    
>> 2007-02-23 14:08:18 UTC (rev 22913)
>> +++ 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/rdf/install.rdf    
>> 2007-02-23 14:12:04 UTC (rev 22914)
>> @@ -0,0 +1,15 @@
>> +<?xml version="1.0"?>
>> +
>> +<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
>> +     xmlns:em="http://www.mozilla.org/2004/em-rdf#">
>> +
>> +  <Description about="urn:wyona:install-manifest">
>> +    <em:id>yanel at wyona.com</em:id>
>> +    <em:version>@VERSION@</em:version>
>> +    <em:name>Wyona Yanel</em:name>
>> +    <em:description>Everything is Content.</em:description>
>> +    <em:contributor>Michael Wechner (Wyona Inc.)</em:contributor>
>> +    <em:homepageURL>http://yanel.wyona.org/</em:homepageURL>
>> +    
>> <em:updateURL>http://yanel.wyona.org/download/update.rdf</em:updateURL>
>> +  </Description>
>> +</RDF>
>>
>> Added: 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/rdf/update.rdf 
>>
>> ===================================================================
>> --- 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/rdf/update.rdf    
>> 2007-02-23 14:08:18 UTC (rev 22913)
>> +++ 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/rdf/update.rdf    
>> 2007-02-23 14:12:04 UTC (rev 22914)
>> @@ -0,0 +1,29 @@
>> +<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
>> +     xmlns:um="http://www.wyona.org/update-manager/1.0#">
>> +
>> +  <rdf:Description rdf:about="urn:wyona:application:updates">
>> +    <um:versions>
>> +      <rdf:Seq>
>> +        <rdf:li 
>> rdf:resource="urn:wyona:application:update:1.0-dev-r22343"/>
>> +        <rdf:li 
>> rdf:resource="urn:wyona:application:update:1.0-dev-r22342"/>
>> +      </rdf:Seq>
>> +    </um:versions>
>> +  </rdf:Description>  +  +  <rdf:Description 
>> rdf:about="urn:wyona:application:update:1.0-dev-r22342">
>> +    <um:version>1.0-dev-r22342</um:version>
>> +    <um:targetApplication>
>> +      <rdf:Description rdf:about="urn:wyona:targetapplication:tomcat">
>> +        <um:minVersion>5.0.0</um:minVersion>
>> +        <um:maxVersion>5.5.*</um:maxVersion>
>> +        
>> <um:updateLink>http://yanel.wyona.org/download/wyona-yanel-jetty-build-0.1.1.xml</um:updateLink> 
>>
>> +      </rdf:Description>
>> +    </um:targetApplication>
>> +  </rdf:Description>
>> +
>> +  <rdf:Description 
>> rdf:about="urn:wyona:application:update:1.0-dev-r22343">
>> +    <um:version>1.0-dev-r22343</um:version>
>> +    
>> <um:updateURL>http://yanel.wyona.org/download/binary-snapshots/unix/wyona-yanel-SNAPSHOT-1.0-dev-r22342-bin.tar.gz</um:updateURL> 
>>
>> +  </rdf:Description>
>> +
>> +</rdf:RDF>
>>
>> Added: 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/resource.xml 
>>
>> ===================================================================
>> --- 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/resource.xml    
>> 2007-02-23 14:08:18 UTC (rev 22913)
>> +++ 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/resource.xml    
>> 2007-02-23 14:12:04 UTC (rev 22914)
>> @@ -0,0 +1,17 @@
>> +<?xml version="1.0"?>
>> +
>> +<resource xmlns="http://www.wyona.org/yanel/1.0"
>> +  name="update-webapp"
>> +  namespace="http://www.wyona.org/yanel/resource/1.0"
>> +  class="org.wyona.yanel.impl.resources.UpdateResource"
>> +  >
>> +<description>
>> +Check for updates of Yanel webapp
>> +</description>
>> +
>> +<rtd>
>> +<!--
>> +  <property name="foo" default-value="bar"/>
>> +-->
>> +</rtd>
>> +</resource>
>>
>> Added: 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/build/build.properties 
>>
>> ===================================================================
>> --- 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/build/build.properties    
>> 2007-02-23 14:08:18 UTC (rev 22913)
>> +++ 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/build/build.properties    
>> 2007-02-23 14:12:04 UTC (rev 22914)
>> @@ -0,0 +1,2 @@
>> +resource.name=update
>> +resource.version=0.0.1-dev-rXXX
>>
>> Added: 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/build/dependencies.xml 
>>
>> ===================================================================
>> --- 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/build/dependencies.xml    
>> 2007-02-23 14:08:18 UTC (rev 22913)
>> +++ 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/build/dependencies.xml    
>> 2007-02-23 14:12:04 UTC (rev 22914)
>> @@ -0,0 +1,27 @@
>> +<?xml version="1.0"?>
>> +
>> +<project name="wiki-dependencies" 
>> xmlns:artifact="antlib:org.apache.maven.artifact.ant">
>> +
>> +  <target name="dependencies" description="Dependencies">
>> +    <artifact:remoteRepository id="wyona.remote.repository" 
>> url="http://www.wyona.org/maven2/"/>
>> +
>> +    <artifact:dependencies pathId="maven2.classpath" 
>> filesetId="maven2.fileset">
>> +      <remoteRepository refid="wyona.remote.repository"/>
>> +      <dependency groupId="wyona-org-yanel" artifactId="yanel-core"
>> +                  version="${yanel.source.version}"/>
>> +      <dependency groupId="avalon-framework" 
>> artifactId="avalon-framework-api" version="4.3"/>
>> +      <dependency groupId="avalon-framework" 
>> artifactId="avalon-framework-impl" 
>> version="4.3"/>                                +      <dependency 
>> groupId="jena" artifactId="jena"
>> +                  version="2.1"/>
>> +    </artifact:dependencies>
>> +
>> +    <artifact:dependencies pathId="maven2.resource.classpath" 
>> filesetId="maven2.resource.fileset">
>> +      <remoteRepository refid="wyona.remote.repository"/>
>> +      <!-- No resource specific libs yet -->
>> +    </artifact:dependencies>
>> +
>> +    <property name="maven2.cp" refid="maven2.classpath"/>
>> +    <!--<echo>Maven2 classpath: ${maven2.cp}</echo>-->
>> +  </target>
>> +
>> +</project>
>>
>> Added: 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/java/org/wyona/yanel/impl/resources/InstallRDF.java 
>>
>> ===================================================================
>> --- 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/java/org/wyona/yanel/impl/resources/InstallRDF.java    
>> 2007-02-23 14:08:18 UTC (rev 22913)
>> +++ 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/java/org/wyona/yanel/impl/resources/InstallRDF.java    
>> 2007-02-23 14:12:04 UTC (rev 22914)
>> @@ -0,0 +1,115 @@
>> +/*
>> + * Copyright 2006 Wyona
>> + */
>> +
>> +package org.wyona.yanel.impl.resources;
>> +
>> +import org.apache.log4j.Category;
>> +import java.io.File;
>> +import java.io.InputStream;
>> +import java.io.FileInputStream;
>> +import com.hp.hpl.jena.rdf.model.*;
>> +import com.hp.hpl.jena.vocabulary.*;
>> +import com.hp.hpl.jena.rdf.model.impl.PropertyImpl;
>> +import javax.servlet.http.HttpServletRequest;
>> +/**
>> + * + */
>> +public class InstallRDF {
>> +    +    private static Category log = 
>> Category.getInstance(InstallRDF.class);
>> +    private String id;
>> +    private String version;
>> +    private String installtype;
>> +    private String updateURL;
>> +    private String osName; //platform
>> +    private String javaVersion;
>> +    private String targetApplicationId;
>> +    private String targetApplicationVersion;
>> +    +    private String updateManagerNS = 
>> "http://www.wyona.org/update-manager/1.0#"; +    +    public 
>> InstallRDF(InputStream in, HttpServletRequest request){
>> +        setServerInfoDetail(request);
>> +        +        osName = System.getProperty("os.name");
>> +        javaVersion = System.getProperty("java.version");
>> +        +        Model model = ModelFactory.createDefaultModel();
>> +        //read the RDF/XML file
>> +        model.read(in, "");
>> +        parseModel(model);
>> +    }
>> +
>> +    private void parseModel(Model model) {
>> +        Resource install = 
>> model.getResource("urn:wyona:application:install");
>> +        +        Property idProperty = new 
>> PropertyImpl(updateManagerNS, "id");
>> +        id = install.getRequiredProperty(idProperty).getString();
>> +        Property versionProperty = new PropertyImpl(updateManagerNS, 
>> "version");
>> +        version = 
>> install.getRequiredProperty(versionProperty).getString();
>> +        Property installtypeProperty = new 
>> PropertyImpl(updateManagerNS, "installtype");
>> +        installtype = 
>> install.getRequiredProperty(installtypeProperty).getString();
>> +
>> +        Property updateURLProperty = new 
>> PropertyImpl(updateManagerNS, "updateURL");
>> +        updateURL = 
>> install.getRequiredProperty(updateURLProperty).getString();
>> +
>> +        /*Property targetApplicationProperty = new 
>> PropertyImpl(updateManagerNS, "targetApplication");
>> +        Resource targetApplication = 
>> install.getProperty(targetApplicationProperty).getResource();
>> +        +        Property targetApplicationIdProperty = new 
>> PropertyImpl(updateManagerNS, "id");
>> +        targetApplicationId = 
>> targetApplication.getRequiredProperty(targetApplicationIdProperty).getString(); 
>>
>> +        Property targetApplicationVersionProperty = new 
>> PropertyImpl(updateManagerNS, "version");
>> +        targetApplicationVersion = 
>> targetApplication.getRequiredProperty(targetApplicationVersionProperty).getString();*/ 
>>
>> +        +    }
>> +
>> +    private void setServerInfoDetail(HttpServletRequest request) {
>> +        //this needs to be implemented for each servlet container 
>> since it doesn't seem the string of getServerInfo() is standardized
>> +        String serverInfo = 
>> request.getSession().getServletContext().getServerInfo();
>> +        +        if (serverInfo.startsWith("Apache Tomcat")) {
>> +            targetApplicationId  = serverInfo.split("/")[0];
>> +            targetApplicationVersion  = serverInfo.split("/")[1];
>> +        } else {
>> +            targetApplicationId  = serverInfo.split("/")[0];
>> +            targetApplicationVersion  = serverInfo.split("/")[1];
>> +            log.info("the dedection of the servlet container name 
>> and version is just a guess. if there is something wrong please 
>> implement your servlets getServerInfo() string. thanks :)");
>> +        }
>> +        +    }
>> +    +
>> +    public String getId() {
>> +        return id;
>> +    }
>> +
>> +    public String getInstalltype() {
>> +        return installtype;
>> +    }
>> +
>> +    public String getUpdateURL() {
>> +        return updateURL;
>> +    }
>> +
>> +    public String getVersion() {
>> +        return version;
>> +    }
>> +
>> +    public String getJavaVersion() {
>> +        return javaVersion;
>> +    }
>> +
>> +    public String getOsName() {
>> +        return osName;
>> +    }
>> +
>> +    public String getTargetApplicationId() {
>> +        return targetApplicationId;
>> +    }
>> +
>> +    public String getTargetApplicationVersion() {
>> +        return targetApplicationVersion;
>> +    }
>> +    +}
>> \ No newline at end of file
>>
>> Added: 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/java/org/wyona/yanel/impl/resources/UpdateRDF.java 
>>
>> ===================================================================
>> --- 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/java/org/wyona/yanel/impl/resources/UpdateRDF.java    
>> 2007-02-23 14:08:18 UTC (rev 22913)
>> +++ 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/java/org/wyona/yanel/impl/resources/UpdateRDF.java    
>> 2007-02-23 14:12:04 UTC (rev 22914)
>> @@ -0,0 +1,104 @@
>> +/*
>> + * Copyright 2006 Wyona
>> + */
>> +
>> +package org.wyona.yanel.impl.resources;
>> +
>> +import org.apache.log4j.Category;
>> +import org.wyona.yanel.impl.resources.VersionComparator;
>> +
>> +import java.io.File;
>> +import java.io.InputStream;
>> +import java.io.FileInputStream;
>> +import java.util.ArrayList;
>> +import com.hp.hpl.jena.rdf.model.*;
>> +import com.hp.hpl.jena.vocabulary.*;
>> +import com.hp.hpl.jena.rdf.model.impl.PropertyImpl;
>> +/**
>> + * + */
>> +public class UpdateRDF {
>> +    +    private static Category log = 
>> Category.getInstance(InstallRDF.class);
>> +    private ArrayList updateVersions = new ArrayList();
>> +    private Model updateRdfModel;
>> +    private InstallRDF installRdf;
>> +    +    private String updateManagerNS = 
>> "http://www.wyona.org/update-manager/1.0#"; +    +    public 
>> UpdateRDF(InputStream in, InstallRDF installRdf) throws Exception{
>> +        Model model = ModelFactory.createDefaultModel();
>> +        //read the RDF/XML file
>> +        model.read(in, "");
>> +        this.updateRdfModel = model;
>> +        this.installRdf = installRdf;
>> +        if (installRdf == null) {
>> +            throw new Exception("InstallRDF should not be null");
>> +        }
>> +        setUpdateVersions();
>> +    }
>> +
>> +    private void setUpdateVersions() {
>> +        Resource update = 
>> updateRdfModel.getResource("urn:wyona:application:updates");
>> +        +        Property versionsProperty = new 
>> PropertyImpl(updateManagerNS, "versions");
>> +        Seq versions = update.getProperty(versionsProperty).getSeq();
>> +        +        NodeIterator iter2 = versions.iterator();
>> +        Property versionProperty = new PropertyImpl(updateManagerNS, 
>> "version");
>> +        Property idProperty = new PropertyImpl(updateManagerNS, "id");
>> +        Property targetApplicationProperty = new 
>> PropertyImpl(updateManagerNS, "targetApplication");
>> +        Property minVersionProperty = new 
>> PropertyImpl(updateManagerNS, "minVersion");
>> +        Property maxVersionProperty = new 
>> PropertyImpl(updateManagerNS, "maxVersion");
>> +        Property changeLogProperty = new 
>> PropertyImpl(updateManagerNS, "changelog");
>> +        Property updateLinkProperty = new 
>> PropertyImpl(updateManagerNS, "updateLink");
>> +        +        while (iter2.hasNext()) {
>> +            Resource versionResource = ((Resource) iter2.next());
>> +            +            //check id
>> +            if 
>> (versionResource.getProperty(idProperty).getString().equals(installRdf.getId())) 
>> {
>> +                //check for targetApplicationId
>> +                Seq targetApplicationSeq = 
>> versionResource.getProperty(targetApplicationProperty).getSeq();
>> +                NodeIterator targetApplicationIter = 
>> targetApplicationSeq.iterator();
>> +                while (targetApplicationIter.hasNext()) {
>> +                    Resource targetApplicationResource = ((Resource) 
>> targetApplicationIter.next());
>> +                    String test1 = 
>> targetApplicationResource.getProperty(idProperty).getString();
>> +                    String test2 = installRdf.getTargetApplicationId();
>> +                    System.out.println("taid: "+test1 +" install: "+ 
>> test2);
>> +                    +                    if 
>> (targetApplicationResource.getProperty(idProperty).getString().equals(installRdf.getTargetApplicationId())) 
>> {
>> +
>> +                        //check for minorVersion
>> +                        String minVersion = 
>> targetApplicationResource.getProperty(minVersionProperty).getString();
>> +                        String installVersion = 
>> installRdf.getTargetApplicationVersion();
>> +                        VersionComparator versionComparator = new 
>> VersionComparator(); +                        if 
>> (versionComparator.compare(installVersion, minVersion) >= 0) {
>> +                            //check for maxVersion
>> +                            String maxVersion = 
>> targetApplicationResource.getProperty(maxVersionProperty).getString();
>> +                            if 
>> (versionComparator.compare(maxVersion, installVersion) >= 0) {
>> +                                UpdateVersions updateVersions = new 
>> UpdateVersions();
>> +                                updateVersions.version = 
>> versionResource.getProperty(versionProperty).getString();
>> +                                updateVersions.changeLog = 
>> versionResource.getProperty(changeLogProperty).getString();
>> +                                updateVersions.updateLink = 
>> targetApplicationResource.getProperty(updateLinkProperty).getString();
>> +                                
>> this.updateVersions.add(updateVersions);
>> +                            }
>> +                        }
>> +                    }
>> +                }
>> +
>> +                +            }
>> +        }
>> +    }
>> +
>> +    public ArrayList getUpdateVersions() {
>> +        return updateVersions;
>> +    }
>> +    +    public class UpdateVersions {     +        String version;
>> +        String changeLog;
>> +        String updateLink;
>> +    }
>> +}
>>
>> Added: 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/java/org/wyona/yanel/impl/resources/UpdateResource.java 
>>
>> ===================================================================
>> --- 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/java/org/wyona/yanel/impl/resources/UpdateResource.java    
>> 2007-02-23 14:08:18 UTC (rev 22913)
>> +++ 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/java/org/wyona/yanel/impl/resources/UpdateResource.java    
>> 2007-02-23 14:12:04 UTC (rev 22914)
>> @@ -0,0 +1,228 @@
>> +/*
>> + * Copyright 2006 Wyona
>> + */
>> +
>> +package org.wyona.yanel.impl.resources;
>> +
>> +import org.apache.log4j.Category;
>> +import org.wyona.yanel.core.Path;
>> +import org.wyona.yanel.core.Resource;
>> +import org.wyona.yanel.core.ResourceConfiguration;
>> +import org.wyona.yanel.core.api.attributes.ViewableV2;
>> +import org.wyona.yanel.core.attributes.viewable.View;
>> +import org.wyona.yanel.core.attributes.viewable.ViewDescriptor;
>> +import javax.servlet.http.HttpServletRequest;
>> +
>> +import org.wyona.yanel.core.transformation.I18nTransformer;
>> +import org.wyona.yanel.impl.resources.UpdateRDF.UpdateVersions;
>> +
>> +import javax.xml.transform.Transformer;
>> +import javax.xml.transform.TransformerConfigurationException;
>> +import javax.xml.transform.TransformerException;
>> +import javax.xml.transform.TransformerFactory;
>> +import javax.xml.transform.TransformerFactoryConfigurationError;
>> +import javax.xml.transform.dom.DOMSource;
>> +import java.io.ByteArrayOutputStream;
>> +import java.io.ByteArrayInputStream;
>> +import java.io.FileInputStream;
>> +import java.util.ArrayList;
>> +
>> +import javax.xml.parsers.DocumentBuilder;
>> +import javax.xml.parsers.DocumentBuilderFactory;
>> +import javax.xml.parsers.SAXParser;
>> +import javax.xml.parsers.SAXParserFactory;
>> +import java.io.File;
>> +import javax.xml.transform.stream.StreamResult;
>> +import javax.xml.transform.stream.StreamSource;
>> +import java.net.URL;
>> +import java.io.InputStream;
>> +import org.w3c.dom.Document;
>> +import org.w3c.dom.Element;
>> +import org.w3c.dom.NodeList;
>> +import org.w3c.dom.Node;
>> +
>> +
>> +
>> +import com.hp.hpl.jena.rdf.model.*;
>> +
>> +
>> +
>> +/**
>> + * + */
>> +public class UpdateResource extends Resource implements ViewableV2 {
>> +
>> +    private static Category log = 
>> Category.getInstance(UpdateResource.class);
>> +    private String defaultLanguage = "en";
>> +    private String language = null;
>> +    +    /**
>> +     * +     */
>> +    public UpdateResource() {
>> +    }
>> +
>> +    /**
>> +     * +     */
>> +    public ViewDescriptor[] getViewDescriptors() {
>> +        return null;
>> +    }
>> +
>> +    /**
>> +     * +     */
>> +    public View getView(String viewId) throws Exception {
>> +
>> +        String path = getPath();
>> +        HttpServletRequest request = getRequest();
>> +        +        String submit = request.getParameter("submit");
>> +        String check = request.getParameter("check");
>> +        String update = request.getParameter("update");
>> +
>> +        // Get language
>> +        try {
>> +            language = request.getParameter("yanel.meta.language");
>> +        } catch (Exception e) {
>> +            log.debug("language param is not found will use default 
>> : " + language);
>> +            language = defaultLanguage;
>> +        }
>> +        if (language == null || ("").equals(language)) {
>> +            log.debug("language param is empty or null : " + language);
>> +            language = defaultLanguage;
>> +        }
>> +
>> +        Transformer transformer = null;
>> +        I18nTransformer i18nTransformer = new 
>> I18nTransformer("update", language);
>> +        ByteArrayOutputStream byteArrayOutputStream = new 
>> ByteArrayOutputStream();
>> +        View defaultView = new View();
>> +        DocumentBuilder builder = 
>> DocumentBuilderFactory.newInstance().newDocumentBuilder();
>> +        +        try {
>> +
>> +                    //install.rdf
>> +                    String WEBINFPath = 
>> request.getSession().getServletContext().getRealPath("WEB-INF");
>> +                    +                    InputStream installRdfIn= 
>> new FileInputStream(new File(WEBINFPath + File.separator + "classes" 
>> + File.separator + "install.rdf"));
>> +                    InstallRDF installRdf = new 
>> InstallRDF(installRdfIn, request);
>> +
>> +                    +                    
>> System.out.println(installRdf.getId());
>> +                    System.out.println(installRdf.getInstalltype());
>> +                    System.out.println(installRdf.getOsName());
>> +                    
>> System.out.println(installRdf.getTargetApplicationId());
>> +                    
>> System.out.println(installRdf.getTargetApplicationVersion());
>> +                    System.out.println(installRdf.getUpdateURL());
>> +                    System.out.println(installRdf.getVersion());
>> +                    System.out.println(installRdf.getJavaVersion());
>> +                    +                    +                    
>> +                    URL UpdateRdfUrl = new 
>> URL(installRdf.getUpdateURL());
>> +                    InputStream updateRdfIn = 
>> UpdateRdfUrl.openStream();
>> +                    UpdateRDF updateRdf = new UpdateRDF(updateRdfIn, 
>> installRdf);
>> +                    +
>> +                    +                    if 
>> (installRdf.getInstalltype().equals("source")) {
>> +                        StringBuffer message = new StringBuffer();
>> +                        message.append("<p>");
>> +                        message.append("This Yanel was installed 
>> from source. You can only use the updater if you installed yanel from 
>> binary. Please use svn up, build.sh");
>> +                        message.append("</p>");
>> +                        +                        
>> byteArrayOutputStream = getOutput(message);
>> +                        //transformer = 
>> TransformerFactory.newInstance().newTransformer();
>> +
>> +                        +                    } else if 
>> (installRdf.getInstalltype().equals("bin-snapshot")) {
>> +                        StringBuffer message = new StringBuffer();
>> +                        message.append("<p>");
>> +                        message.append("This are the updates which 
>> you can get:");
>> +                        message.append("</p>");
>> +                        message.append("<ul>");
>> +                        for (int i = 0; i < 
>> updateRdf.getUpdateVersions().size(); i++) {
>> +                            UpdateVersions test = (UpdateVersions) 
>> updateRdf.getUpdateVersions().get(i);
>> +                            if (test.version != 
>> installRdf.getVersion()) {
>> +                                message.append("<li>Version: " + 
>> test.version + " ChangeLog: " + test.changeLog + " Update Link: " + 
>> test.updateLink + "</li>");
>> +                            }
>> +                        }
>> +                        message.append("</ul>");
>> +                        byteArrayOutputStream = getOutput(message);
>> +                    }
>> +                    //this.installRdf.put("updateURL", 
>> installRdf.getChild("Description").getChild("um:updateURL").getValue());
>> +                    //this.installRdf.put("version", 
>> installRdf.getChild("Description").getChild("um:version").getValue()); 
>> +                    //transformer.transform(new 
>> StreamSource(InstallRdf), new StreamResult(byteArrayOutputStream));
>> +                    +                    //update.rdf
>> +                    //URL UpdateRdfUrl = new 
>> URL(installRdf.getUpdateURL());
>> +                    //InputStream UpdateRdf = 
>> UpdateRdfUrl.openStream();
>> +                    +                    //Configuration updateRdf = 
>> configBuilder.build(UpdateRdf);
>> +                    //Document UpdateRdfDoc = builder.parse(UpdateRdf);
>> +                    //transformer = 
>> TransformerFactory.newInstance().newTransformer();
>> +                    //transformer.transform(new 
>> DOMSource(UpdateRdfDoc), new StreamResult(byteArrayOutputStream));
>> +                    +                    +
>> +            SAXParser saxParser = 
>> SAXParserFactory.newInstance().newSAXParser();
>> +            saxParser.parse(new 
>> ByteArrayInputStream(byteArrayOutputStream.toByteArray()),
>> +                    i18nTransformer);
>> +        } catch (Exception e) {
>> +            log.error(e.getMessage(), e);
>> +        }
>> +
>> +        defaultView.setMimeType("application/xhtml+xml");
>> +        defaultView.setInputStream(i18nTransformer.getInputStream());
>> +        return defaultView;
>> +    }
>> +
>> +    private ByteArrayOutputStream getOutput(StringBuffer insert) 
>> throws TransformerConfigurationException {
>> +        ByteArrayOutputStream byteArrayOutputStream = new 
>> ByteArrayOutputStream();
>> +        StringBuffer sb = new StringBuffer();
>> +        sb.append("<?xml version=\"1.0\"?>");
>> +        sb.append("<html xmlns=\"http://www.w3.org/1999/xhtml\">");
>> +        sb.append("<head>");
>> +        sb.append("<title>Update Yanel</title>");
>> +        sb.append("</head>");
>> +        sb.append("<body>");
>> +        sb.append(insert);
>> +        sb.append("</body>");
>> +        sb.append("</html>");
>> +        +        try {
>> +            Transformer transformer = 
>> TransformerFactory.newInstance().newTransformer();
>> +            transformer.transform(new StreamSource(new 
>> java.io.StringBufferInputStream(sb.toString())), new 
>> StreamResult(byteArrayOutputStream));
>> +        } catch (Exception e) {
>> +            log.error(e.getMessage(), e);
>> +        }
>> +        return byteArrayOutputStream;
>> +    }
>> +    +    public boolean exists() throws Exception {
>> +        // NOTE does exists() make sense for this resource?
>> +        log.warn("Not implemented yet!");
>> +        return true;
>> +    }
>> +
>> +    /**
>> +     * +     */
>> +    public long getSize() throws Exception {
>> +        // NOTE does getSize make sense for this resource?
>> +        return getRealm().getRepository().getSize(new Path(getPath()));
>> +    }
>> +    +    /**
>> +     * Get property value from resource configuration
>> +     */
>> +    private String getResourceProperty(String name) throws Exception {
>> +        ResourceConfiguration rc = getConfiguration();
>> +        if (rc != null) return rc.getProperty(name);
>> +        return getRTI().getProperty(name);
>> +    }
>> +    +    public String getMimeType(String viewId){
>> +        return "application/xml";
>> +    }
>> +}
>>
>> Added: 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/java/org/wyona/yanel/impl/resources/VersionComparator.java 
>>
>> ===================================================================
>> --- 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/java/org/wyona/yanel/impl/resources/VersionComparator.java    
>> 2007-02-23 14:08:18 UTC (rev 22913)
>> +++ 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/java/org/wyona/yanel/impl/resources/VersionComparator.java    
>> 2007-02-23 14:12:04 UTC (rev 22914)
>> @@ -0,0 +1,268 @@
>> +/* ***** BEGIN LICENSE BLOCK *****
>> + * Version: MPL 1.1/GPL 2.0/LGPL 2.1
>> + *
>> + * The contents of this file are subject to the Mozilla Public 
>> License Version
>> + * 1.1 (the "License"); you may not use this file except in 
>> compliance with
>> + * the License. You may obtain a copy of the License at
>> + * http://www.mozilla.org/MPL/
>> + *
>> + * Software distributed under the License is distributed on an "AS 
>> IS" basis,
>> + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the 
>> License
>> + * for the specific language governing rights and limitations under the
>> + * License.
>> + *
>> + * The Original Code is Java XPCOM Bindings.
>> + *
>> + * The Initial Developer of the Original Code is
>> + * IBM Corporation.
>> + * Portions created by the Initial Developer are Copyright (C) 2005
>> + * IBM Corporation. All Rights Reserved.
>> + *
>> + * Contributor(s):
>> + *   Javier Pedemonte (jhpedemonte at gmail.com)
>> + *
>> + * Alternatively, the contents of this file may be used under the 
>> terms of
>> + * either the GNU General Public License Version 2 or later (the 
>> "GPL"), or
>> + * the GNU Lesser General Public License Version 2.1 or later (the 
>> "LGPL"),
>> + * in which case the provisions of the GPL or the LGPL are 
>> applicable instead
>> + * of those above. If you wish to allow use of your version of this 
>> file only
>> + * under the terms of either the GPL or the LGPL, and not to allow 
>> others to
>> + * use your version of this file under the terms of the MPL, 
>> indicate your
>> + * decision by deleting the provisions above and replace them with 
>> the notice
>> + * and other provisions required by the GPL or the LGPL. If you do 
>> not delete
>> + * the provisions above, a recipient may use your version of this 
>> file under
>> + * the terms of any one of the MPL, the GPL or the LGPL.
>> + *
>> + * ***** END LICENSE BLOCK ***** */
>> +
>> +package org.wyona.yanel.impl.resources;
>> +
>> +import java.util.Enumeration;
>> +import java.util.StringTokenizer;
>> +
>> +
>> +
>> +/**
>> + * Version strings are dot-separated sequences of version-parts.
>> + * <p>
>> + * A version-part consists of up to four parts, all of which are 
>> optional:
>> + * <br><code>
>> + * &lt;number-a&gt;&lt;string-b&gt;&lt;number-c&gt;
>> + * &lt;string-d (everything else)&gt;
>> + * </code> <p>
>> + * A version-part may also consist of a single asterisk "*" which 
>> indicates
>> + * "infinity".
>> + * <p>
>> + * Numbers are base-10, and are zero if left out.
>> + * Strings are compared bytewise.
>> + * <p>
>> + * For additional backwards compatibility, if "string-b" is "+" then
>> + * "number-a" is incremented by 1 and "string-b" becomes "pre".
>> + * <p> <pre>
>> + * 1.0pre1
>> + * < 1.0pre2  + *   < 1.0 == 1.0.0 == 1.0.0.0
>> + *     < 1.1pre == 1.1pre0 == 1.0+
>> + *       < 1.1pre1a
>> + *         < 1.1pre1
>> + *           < 1.1pre10a
>> + *             < 1.1pre10
>> + * </pre>
>> + * Although not required by this interface, it is recommended that
>> + * numbers remain within the limits of a signed char, i.e. -127 to 128.
>> + */
>> +public class VersionComparator {
>> +
>> +
>> +  /**
>> +   * Compare two version strings
>> +   * @param A   a version string
>> +   * @param B   a version string
>> +   * @return a value less than 0 if A < B;
>> +   *         the value 0 if A == B;
>> +   *         or a value greater than 0 if A > B
>> +   */
>> +  public int compare(String A, String B) {
>> +    int result;
>> +    String a = A, b = B;
>> +
>> +    do {
>> +      VersionPart va = new VersionPart();
>> +      VersionPart vb = new VersionPart();
>> +      a = parseVersionPart(a, va);
>> +      b = parseVersionPart(b, vb);
>> +
>> +      result = compareVersionPart(va, vb);
>> +      if (result != 0) {
>> +        break;
>> +      }
>> +    } while (a != null || b != null);
>> +
>> +    return result;
>> +  }
>> +
>> +  private class VersionPart {
>> +    int     numA = 0;
>> +    String  strB;
>> +    int     numC = 0;
>> +    String  extraD;
>> +  }
>> +
>> +  private static String parseVersionPart(String aVersion, 
>> VersionPart result) {
>> +    if (aVersion == null || aVersion.length() == 0) {
>> +      return aVersion;
>> +    }
>> +
>> +    StringTokenizer tok = new StringTokenizer(aVersion.trim(), ".");
>> +    String part = tok.nextToken();
>> +
>> +    if (part.equals("*")) {
>> +      result.numA = Integer.MAX_VALUE;
>> +      result.strB = "";
>> +    } else {
>> +      VersionPartTokenizer vertok = new VersionPartTokenizer(part);
>> +      try {
>> +        result.numA = Integer.parseInt(vertok.nextToken());
>> +      } catch (NumberFormatException e) {
>> +        // parsing error; default to zero like 'strtol' C function
>> +        result.numA = 0;
>> +      }
>> +
>> +      if (vertok.hasMoreElements()) {
>> +        String str = vertok.nextToken();
>> +
>> +        // if part is of type "<num>+"
>> +        if (str.charAt(0) == '+') {
>> +          result.numA++;
>> +          result.strB = "pre";
>> +        } else {
>> +          // else if part is of type "<num><alpha>..."
>> +          result.strB = str;
>> +
>> +          if (vertok.hasMoreTokens()) {
>> +            try {
>> +              result.numC = Integer.parseInt(vertok.nextToken());
>> +            } catch (NumberFormatException e) {
>> +              // parsing error; default to zero like 'strtol' C 
>> function
>> +              result.numC = 0;
>> +            }
>> +            if (vertok.hasMoreTokens()) {
>> +              result.extraD = vertok.getRemainder();
>> +            }
>> +          }
>> +        }
>> +      }
>> +    }
>> +
>> +    if (tok.hasMoreTokens()) {
>> +      // return everything after "."
>> +      return aVersion.substring(part.length() + 1);
>> +    }
>> +    return null;
>> +  }
>> +
>> +  private int compareVersionPart(VersionPart va, VersionPart vb) {
>> +    int res = compareInt(va.numA, vb.numA);
>> +    if (res != 0) {
>> +      return res;
>> +    }
>> +
>> +    res = compareString(va.strB, vb.strB);
>> +    if (res != 0) {
>> +      return res;
>> +    }
>> +
>> +    res = compareInt(va.numC, vb.numC);
>> +    if (res != 0) {
>> +      return res;
>> +    }
>> +
>> +    return compareString(va.extraD, vb.extraD);
>> +  }
>> +
>> +  private int compareInt(int n1, int n2) {
>> +    return n1 - n2;
>> +  }
>> +
>> +  private int compareString(String str1, String str2) {
>> +    // any string is *before* no string
>> +    if (str1 == null) {
>> +      return (str2 != null) ? 1 : 0;
>> +    }
>> +
>> +    if (str2 == null) {
>> +      return -1;
>> +    }
>> +
>> +    return str1.compareTo(str2);
>> +  }
>> +
>> +}
>> +
>> +/**
>> + * Specialized tokenizer for Mozilla version strings.  A token can
>> + * consist of one of the four sections of a version string: <code>
>> + * &lt;number-a&gt;&lt;string-b&gt;&lt;number-c&gt;
>> + * &lt;string-d (everything else)&gt;</code>.
>> + */
>> +class VersionPartTokenizer implements Enumeration {
>> +
>> +  String part;
>> +
>> +  public VersionPartTokenizer(String aPart) {
>> +    part = aPart;
>> +  }
>> +
>> +  public boolean hasMoreElements() {
>> +    return part.length() != 0;
>> +  }
>> +
>> +  public boolean hasMoreTokens() {
>> +    return part.length() != 0;
>> +  }
>> +
>> +  public Object nextElement() {
>> +    if (part.matches("[\\+\\-]?[0-9].*")) {
>> +      // if string starts with a number...
>> +      int index = 0;
>> +      if (part.charAt(0) == '+' || part.charAt(0) == '-') {
>> +        index = 1;
>> +      }
>> +
>> +      while (index < part.length() && 
>> Character.isDigit(part.charAt(index))) {
>> +        index++;
>> +      }
>> +
>> +      String numPart = part.substring(0, index);
>> +      part = part.substring(index);
>> +      return numPart;
>> +    } else {
>> +      // ... or if this is the non-numeric part of version string
>> +      int index = 0;
>> +      while (index < part.length() && 
>> !Character.isDigit(part.charAt(index))) {
>> +        index++;
>> +      }
>> +
>> +      String alphaPart = part.substring(0, index);
>> +      part = part.substring(index);
>> +      return alphaPart;
>> +    }
>> +  }
>> +
>> +  public String nextToken() {
>> +    return (String) nextElement();
>> +  }
>> +
>> +  /**
>> +   * Returns what remains of the original string, without 
>> tokenization.  This
>> +   * method is useful for getting the <code>&lt;string-d (everything 
>> else)&gt;
>> +   * </code> section of a version string.
>> +   * +   * @return remaining version string
>> +   */
>> +  public String getRemainder() {
>> +    return part;
>> +  }
>> +
>> +}
>> +
>>
>> Added: 
>> public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/xslt/update.xsl 
>>
>> ===================================================================
>>
>>
>> _______________________________________________
>> Yanel-commits mailing list
>> Yanel-commits at wyona.com
>> http://wyona.com/cgi-bin/mailman/listinfo/yanel-commits
>>
>
>
> _______________________________________________
> Yanel-development mailing list
> Yanel-development at wyona.com
> http://wyona.com/cgi-bin/mailman/listinfo/yanel-development
>


-- 
Michael Wechner
Wyona      -   Open Source Content Management   -    Apache Lenya
http://www.wyona.com                      http://lenya.apache.org
michael.wechner at wyona.com                        michi at apache.org
+41 44 272 91 61




More information about the Yanel-development mailing list