first buildable version of generated event-type-specific classes
authorAleš Křenek <ljocha@ics.muni.cz>
Wed, 23 Apr 2008 15:14:00 +0000 (15:14 +0000)
committerAleš Křenek <ljocha@ics.muni.cz>
Wed, 23 Apr 2008 15:14:00 +0000 (15:14 +0000)
org.glite.lb.client-java/build.xml
org.glite.lb.client-java/project/genEventTypes.pl [new file with mode: 0644]

index 816febd..1fe4afa 100755 (executable)
@@ -5,6 +5,12 @@
 <project name="lb-client-java" default="default" basedir=".">
     <description>Builds, tests, and runs the project lb-client-java.</description>
     <import file="nbproject/build-impl.xml"/>
+
+               <target name="-pre-compile">
+                       <exec executable="${stageDir}/sbin/glite-lb-at3">
+                               <arg line="project/genEventTypes.pl src/org/glite/lb/client_java"/>
+                       </exec>
+               </target>
     <!--
 
     There exist several targets which are by default empty and which can be 
diff --git a/org.glite.lb.client-java/project/genEventTypes.pl b/org.glite.lb.client-java/project/genEventTypes.pl
new file mode 100644 (file)
index 0000000..645a50a
--- /dev/null
@@ -0,0 +1,103 @@
+@@@LANG: java
+@@@{
+       $dest = shift;
+
+       for my $e ($event->getTypesOrdered) {
+               my $uc = ucfirst $e;
+               my $uuc = uc $e;
+               print "generating $dest/Event$uc.java\n";
+
+               open E,">$dest/Event$uc.java" or die "$dest/Event$uc.java: $!\n";
+
+               print E
+qq{
+package org.glite.lb.client_java;
+import org.glite.jobid.api_java.CheckedString;
+import org.glite.jobid.api_java.Jobid;
+
+public class Event$uc extends Event \{
+       public Event$uc() \{
+       \}
+
+       public String getEventType() \{
+               return "$uc";
+       \}
+};
+
+               selectType $event $e;
+
+               for ($event->getFieldsOrdered) {
+                       my $f = selectField $event $_;
+                       my $fn = $f->{name};
+                       my $fnu = ucfirst $fn;
+                       my $fnuu = uc $fn;
+                       my $t;
+       
+                       while ($fnu =~ /_([a-z])/) {
+                               my $u = uc $1;
+                               $fnu =~ s/_$1/$u/;
+                       }
+       
+                       if ($f->{codes}) {
+                               local $_;
+                               $t = $fnu;
+                               print E
+qq{    public enum $fnu \{ 
+               ${fnuu}_UNDEFINED,
+};
+                               for (@{$f->{codes}}) {
+                                       my $cu = uc $_->{name};
+                                       print E
+qq{            ${fnuu}_${cu},
+};
+                               }
+                               print E
+qq{\}
+};
+                       }
+                       else {
+                               $t = $f->getType;
+                       }
+       
+# XXX: handle nulls in setXX() ?
+                       print E
+qq{    private $t $fn;
+
+       public $t get$fnu() \{
+               return $fn;
+       \}
+
+       public void set$fnu($t val) \{
+               this.$fn = val;
+       \}
+};
+               }
+
+               print E
+
+qq{    public String ulm() \{
+               return (" " +
+};
+       
+
+               for ($event->getFieldsOrdered) {
+                       my $f = selectField $event $_;
+                       my $fn = $f->{name};
+                       my $fnu = ucfirst $fn;
+                       my $fnuu = uc $fn;
+
+                       print E
+qq{            "DG.$uuc.$fnuu=\\"" + $fn + "\\"" +
+};
+               }
+
+               print E 
+qq{            "");
+       \}
+\}
+};
+
+               close E;
+       }
+
+@@@}