[rules-users] Date arithmetic in when part

Mark Proctor mproctor at codehaus.org
Fri Jul 1 02:04:29 EDT 2011


The times attempt to be ISO8601 compliant, for Hours and earlier. 
Although I noticed that tidbit of information is missing for the docs, 
we'll get it added. See TimeUtils

private static final Pattern SIMPLE  = Pattern.compile( 
"([+-])?((\\d+)[Dd])?\\s*((\\d+)[Hh])?\\s*((\\d+)[Mm])?\\s*((\\d+)[Ss])?\\s*((\\d+)([Mm][Ss])?)?" 
);

     public static long parseTimeString( String time ) {
         String trimmed = time.trim();
         long result = 0;
         if( trimmed.length() > 0 ) {
             Matcher mat = SIMPLE.matcher( trimmed );
             if ( mat.matches() ) {
                 int days = (mat.group( SIM_DAY ) != null) ? 
Integer.parseInt( mat.group( SIM_DAY ) ) : 0;
                 int hours = (mat.group( SIM_HOU ) != null) ? 
Integer.parseInt( mat.group( SIM_HOU ) ) : 0;
                 int min = (mat.group( SIM_MIN ) != null) ? 
Integer.parseInt( mat.group( SIM_MIN ) ) : 0;
                 int sec = (mat.group( SIM_SEC ) != null) ? 
Integer.parseInt( mat.group( SIM_SEC ) ) : 0;
                 int ms = (mat.group( SIM_MS ) != null) ? 
Integer.parseInt( mat.group( SIM_MS ) ) : 0;
                 long r = days * DAY_MS + hours * HOU_MS + min * MIN_MS 
+ sec * SEC_MS + ms;
                 if( mat.group(SIM_SGN) != null && mat.group( SIM_SGN 
).equals( "-" ) ) {
                     r = -r;
                 }
                 result = r;
             } else if( "*".equals( trimmed ) || "+*".equals( trimmed ) ) {
                 // positive infinity
                 result = Long.MAX_VALUE;
             } else if( "-*".equals( trimmed ) ) {
                 // negative infinity
                 result = Long.MIN_VALUE;
             } else {
                 throw new RuntimeDroolsException( "Error parsing time 
string: [ " + time + " ]" );
             }
         }
         return result;
     }


On 01/07/2011 06:21, Wolfgang Laun wrote:
> 2011/6/30 <rouvas at mm.di.uoa.gr <mailto:rouvas at mm.di.uoa.gr>>
>
>     What are the available symbolics for temporal values?
>     That is, d is for days, m is for minutes, h is for hours, s is for
>     seconds.
>     Are there any other symbolics specifically for months and years?
>
>
> You can use ms for millisecond. There are no universally acceptable 
> duration values for monts and years .
> -W
>
>
>     I haven't found any mentioning of them in the Fusion manual.
>     I'm using 5.0.1
>
>     Thank you,
>     -Stathis
>
>     Wolfgang Laun wrote:
>     > See the "Fusion" manual, section on Temporal Reasoning/Temporal
>     Operators.
>     > Even when the facts aren't events, these operators can still be
>     applied to
>     > fields of type Date, e.g.
>     >
>     >     $p1: Person( $dob1: dob )
>     >     $p2: Person( $dob2: dob after[3d] $dob1 )
>     >
>     > -W
>     >
>     >
>     > On 28 June 2011 18:02, <rouvas at mm.di.uoa.gr
>     <mailto:rouvas at mm.di.uoa.gr>> wrote:
>     >
>     >> Hi list,
>     >>
>     >> I feel this should be an elementary question but unfortunately
>     I haven't
>     >> been able to find a solution.
>     >>
>     >> I would like to perform date arithmetic in the when part of a rule.
>     >>
>     >> For example, I would like to express something like:
>     >>
>     >> rule "Date compare rule"
>     >>  dialect "mvel"
>     >> when
>     >>  a : A()
>     >>  b : B( a.creationDate <= b.creationDate after 3 months)
>     >> then
>     >>  ...
>     >> end
>     >>
>     >> Apart from using eval()'s is there any other way to express
>     these types
>     >> of
>     >> comparisons?
>     >>
>     >> Thank you for your time,
>     >> -Stathis
>     >>
>     >>
>     >> _______________________________________________
>     >> rules-users mailing list
>     >> rules-users at lists.jboss.org <mailto:rules-users at lists.jboss.org>
>     >> https://lists.jboss.org/mailman/listinfo/rules-users
>     >>
>     >
>
>
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20110701/15a73156/attachment.html 


More information about the rules-users mailing list