aboutsummaryrefslogtreecommitdiff
path: root/challenge-259/luca-ferrari/pljava/src/main/java/Task1.java
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2024-03-04 17:24:02 +0000
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2024-03-04 17:24:02 +0000
commit58d2a420a8de4551ea694c94ab1088cd795dad7d (patch)
treed9ef49892910b3051d7c084c93fec202bcb6647e /challenge-259/luca-ferrari/pljava/src/main/java/Task1.java
parent93e897d94b55160397eff52df0d0b59f1b00a861 (diff)
parent074cecb5fed0a7961ba5c5f4b2605676fe589f25 (diff)
downloadperlweeklychallenge-club-58d2a420a8de4551ea694c94ab1088cd795dad7d.tar.gz
perlweeklychallenge-club-58d2a420a8de4551ea694c94ab1088cd795dad7d.tar.bz2
perlweeklychallenge-club-58d2a420a8de4551ea694c94ab1088cd795dad7d.zip
Merge branch 'master' of https://github.com/manwar/perlweeklychallenge-club
Diffstat (limited to 'challenge-259/luca-ferrari/pljava/src/main/java/Task1.java')
-rw-r--r--challenge-259/luca-ferrari/pljava/src/main/java/Task1.java73
1 files changed, 73 insertions, 0 deletions
diff --git a/challenge-259/luca-ferrari/pljava/src/main/java/Task1.java b/challenge-259/luca-ferrari/pljava/src/main/java/Task1.java
new file mode 100644
index 0000000000..de464e56c0
--- /dev/null
+++ b/challenge-259/luca-ferrari/pljava/src/main/java/Task1.java
@@ -0,0 +1,73 @@
+
+
+
+package PWC259;
+
+/**
+ * PL/Java implementation for PWC 259
+ * Task 1
+ * See <https://perlweeklychallenge.org/blog/perl-weekly-challenge-259>
+ *
+ *
+ * To compile on the local machine:
+
+ $ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/ # if not already set
+ $ mvn clean build
+ $ scp target/PWC259-1.jar luca@rachel:/tmp
+
+
+ * To install into PostgreSQL execute:
+
+ select sqlj.install_jar( 'file:///tmp/PWC259-1.jar', 'PWC259', true );
+
+ select pwc259.task2_pljava();
+
+ and then to redeploy:
+
+ select sqlj.replace_jar( 'file:///tmp/PWC259-1.jar', 'PWC259', true );
+
+*/
+
+import org.postgresql.pljava.*;
+import org.postgresql.pljava.annotation.Function;
+import static org.postgresql.pljava.annotation.Function.Effects.IMMUTABLE;
+import static org.postgresql.pljava.annotation.Function.OnNullInput.RETURNS_NULL;
+
+import java.util.*;
+import java.util.stream.*;
+import java.sql.SQLException;
+import java.util.logging.*;
+import java.sql.ResultSet;
+import java.sql.Date;
+
+public class Task1 {
+
+ private final static Logger logger = Logger.getAnonymousLogger();
+
+ @Function( schema = "pwc259",
+ onNullInput = RETURNS_NULL,
+ effects = IMMUTABLE )
+ public static final java.sql.Date task1_pljava( Date startDay, int how_many, Date[] holidays ) throws SQLException {
+ logger.log( Level.INFO, "Entering pwc259.task1_pljava" );
+
+ Calendar day = Calendar.getInstance();
+ day.setTime( startDay );
+
+ while ( how_many > 0 ) {
+ day.add( Calendar.DAY_OF_YEAR, 1 );
+
+ while ( day.get( Calendar.DAY_OF_MONTH ) == Calendar.SUNDAY
+ || day.get( Calendar.DAY_OF_MONTH ) == Calendar.SATURDAY )
+ day.add( Calendar.DAY_OF_YEAR, 1 );
+
+ if ( holidays != null )
+ for ( Date skip : holidays )
+ if ( skip.equals( day.getTime() ) )
+ day.add( Calendar.DAY_OF_YEAR, 1 );
+
+ how_many--;
+ }
+
+ return new java.sql.Date( day.getTimeInMillis() );
+ }
+}