mend
authorGustavo Martin Morcuende <gu.martinm@gmail.com>
Sun, 10 Apr 2016 12:15:42 +0000 (14:15 +0200)
committerGustavo Martin Morcuende <gu.martinm@gmail.com>
Sun, 10 Apr 2016 12:15:42 +0000 (14:15 +0200)
Allgemeines/DateParsingJava8/src/de/example/date/parsing/DateFormatUtils.java
Allgemeines/DateParsingJava8/src/de/example/date/parsing/MainDateFormat.java
Allgemeines/Threads/Executor/ExecutorwithFuture/src/de/test/thread/executor/future/ThreadMain.java
MyBatis/MyBatis-Spring-ReuseBatchExecutor/src/main/java/de/example/mybatis/executor/ReuseBatchExecutor.java
MyBatis/MyBatis-Spring/src/main/java/de/example/mybatis/spring/TestMain.java
MyBatis/MyBatis-Spring/src/main/java/de/example/mybatis/spring/service/BatchAndSimpleSameTrx.java
MyBatis/MyBatis-Spring/src/main/resources/config/mybatis-config.xml
RemoteAgents/remote-agents-batchapp/pom.xml

index 334a216..a690b19 100644 (file)
@@ -8,6 +8,8 @@ import java.util.Date;
 
 
 public class DateFormatUtils {
+       private static final String TEST1 = "Gustavo";
+       private final String TEST2 = "Martin";
 
        public static String format(Date date, String format) {
                final ZoneId timeZone = ZoneId.of("America/Los_Angeles");
index 6abb385..60ae0be 100644 (file)
@@ -32,6 +32,16 @@ public class MainDateFormat {
                
                
                Date dateCurrentTimeFormatter = DateHourFormatter.parseToDate("12/05/2014 18:40");
+               
+               
+               LocalDate nowTomcat = LocalDate.now(ZoneId.of("America/New_York"));
+               
+               Date joer = Date.from(nowTomcat.atStartOfDay().atZone(ZoneId.of("America/New_York")).toInstant());
+               
+               System.out.println(nowTomcat);
+               
+               System.out.println(joer);
+               
        }
 
 }
index b85f5d7..aab53b8 100644 (file)
@@ -1,11 +1,18 @@
 package de.test.thread.executor.future;
 
+import de.test.thread.executor.future.FutureTaskExample.Car;
+
 
 public class ThreadMain {
        
        public static void main(String[] args) {
-               ThreadTest test = new ThreadTest();
-
-               test.start();
+//             ThreadTest test = new ThreadTest();
+//
+//             test.start();
+               
+               FutureTaskExample lol = new FutureTaskExample();
+               Car jeje = lol.test();
+               
+               System.out.println(jeje.getId());
        }
 }
index c5d543c..bec632d 100644 (file)
@@ -25,6 +25,41 @@ import org.apache.ibatis.session.ResultHandler;
 import org.apache.ibatis.session.RowBounds;
 import org.apache.ibatis.transaction.Transaction;
 
+/**
+ * This class tries to give some kind of solution to this problem:
+ * Why MyBatis implementation only checks for last SQL string?
+ * If the implementation uses map of sql strings then it can reuse the statements even for the multiple queries.
+ * http://mybatis-user.963551.n3.nabble.com/Unexpected-multiple-prepared-statements-when-using-batch-executor-type-td4027708.html
+ * 
+ */
+
+// But be careful when using this Executor:
+//     If you write this:
+//     for (1000 records) {
+//     insert into table A
+//     update into table B
+//     }
+//
+//     you will probably expect the execution to be:
+//     insert into A
+//     insert into B
+//     insert into A
+//     ...
+//
+//     And not
+//     1000 inserts into A
+//     1000 inserts into B
+//
+//     Breaking that expectation sounds like a bad idea.
+//
+//     The BatchExecutor can indeed reuse more than it does at a cost of making it more difficult to understand and control. 
+//
+//     Right now you need to understand how it works for sure, but its behaviour is simple and once you get it you can just
+//  get the same result by changing a bit your code
+//
+//     for (1000 records)  insert into table A
+//     for (1000 records)  update into table B
+
 public class ReuseBatchExecutor extends BaseExecutor {
        public static final int BATCH_UPDATE_RETURN_VALUE = Integer.MIN_VALUE + 1002;
 
index 13ebde1..2208b3b 100644 (file)
@@ -26,12 +26,7 @@ public class TestMain {
 //        exampleService.getAdsByCriteria();
 //
 //
-//        final ExampleCustomService exampleCustomService = (ExampleCustomService) SpringContextLocator
-//                .getInstance().getBean("exampleCustomService");
-//
-//        exampleCustomService.getAds();
-//        
-//        exampleCustomService.updateAds();
+
         
         
 //        final ExampleBatchService exampleBatchService = (ExampleBatchService) SpringContextLocator
@@ -42,23 +37,18 @@ public class TestMain {
 //        exampleBatchService.insertBatchNewAd();
         
         
-//        final BatchAndSimpleSameTrx batchAndSimpleSameTrx = (BatchAndSimpleSameTrx) SpringContextLocator
-//                .getInstance().getBean("batchAndSimpleSameTrx");
-//        
-//        try {
-//             batchAndSimpleSameTrx.insertNewAd();
-//        } catch (CannotGetJdbcConnectionException e) {
-//             logger.error("Error exception: ", e);
-//        } catch (SQLException e) {
-//             logger.error("Error exception: ", e);
-//        }
+        final BatchAndSimpleSameTrx batchAndSimpleSameTrx = (BatchAndSimpleSameTrx) SpringContextLocator
+                .getInstance().getBean("batchAndSimpleSameTrx");
+        
+        try {
+               batchAndSimpleSameTrx.insertNewAd();
+        } catch (CannotGetJdbcConnectionException e) {
+               logger.error("Error exception: ", e);
+        } catch (SQLException e) {
+               logger.error("Error exception: ", e);
+        }
         
-        final ExampleInheritanceService exampleBatchService = (ExampleInheritanceService) SpringContextLocator
-                       .getInstance().getBean("exampleInheritanceService");
-       
-        exampleBatchService.selectAdsParent();
-  
-        exampleBatchService.selectAdsChild();
+
     }
 
 }
index 7a15a89..3123ee0 100644 (file)
@@ -38,10 +38,7 @@ public class BatchAndSimpleSameTrx {
         adTest.setCompanyId(2L);
         adTest.setUpdatedAt(new Date());
         
-        /**
-         * No batched inserts will be sent to data base just in this very moment.
-         */
-        this.adMapper.insert(adTest); 
+
         
         /**
          * We want to use SIMPLE and BATCH operations but MyBatis complains with this exception:
@@ -75,6 +72,20 @@ public class BatchAndSimpleSameTrx {
                        preparedStatement.addBatch();
                }
                
+               
+            final Ad adTest = new Ad();
+            adTest.setAdMobileImage("bild.jpg");
+            adTest.setCompanyCategId(200L);
+            adTest.setCreatedAt(new Date());
+            adTest.setCompanyId(2L);
+            adTest.setUpdatedAt(new Date());
+            
+            /**
+             * No batched inserts will be sent to data base just in this very moment.
+             */
+            this.adMapper.insert(adTest); 
+               
+               
                /**
                 * RIGHT HERE THE BATCH STATEMENTS WILL BE SENT TO THE DATA BASE.
                 */
index 5ee3309..8959895 100644 (file)
     to the same objects which are stored in the local cache. Any modification of
     returned object (lists etc.) influences the local cache contents and subsequently
     the values which are returned from the cache in the lifetime of the session.
-    Therefore, as best practice, do not to modify the objects returned by MyBatis. -->
+    Therefore, as best practice, do not to modify the objects returned by MyBatis.
+    
+       SI SE MODIFICAN, CUANDO HAGA UNA BÚSQUEDA EN LA CACHE POR ESE OBJETO, YA NO LO ENCONTRARÉ,
+       SERÁ COMO SI NUNCA HUBIERA SIDO CACHEADO, Y ENTONCES LA CACHE NO SIRVE PARA NADA.
+       
+       VER CachingExecutor.
+    -->
     <setting name="cacheEnabled" value="false"/>
     <setting name="localCacheScope" value="STATEMENT"/>
     <setting name="lazyLoadingEnabled" value="false"/>
index 64df0fe..25d44ce 100644 (file)
   <build>
     <plugins>
       <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-war-plugin</artifactId>
+        <configuration>
+          <warSourceDirectory>${basedir}/src/main/webapp</warSourceDirectory>
+          <webappDirectory>${warTarget}</webappDirectory>
+          <warName>${project.artifactId}</warName>
+        </configuration>
+      </plugin>
+      <plugin>
         <groupId>org.eclipse.jetty</groupId>
         <artifactId>jetty-maven-plugin</artifactId>
         <version>${jetty.version}</version>