← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 1970: dhis-mobile: Improved auto-importing, logging and creating non-existing periods

 

------------------------------------------------------------
revno: 1970
committer: Saptarshi <sunbiz@xxxxxxxxx>
branch nick: trunk
timestamp: Tue 2010-06-08 00:30:02 +0530
message:
  dhis-mobile: Improved auto-importing, logging and creating non-existing periods
modified:
  dhis-mobile/dhis-service-mobile/src/main/java/org/hisp/dhis/mobile/SmsService.java
  dhis-mobile/dhis-service-mobile/src/main/java/org/hisp/dhis/mobile/api/DefaultMobileImportService.java
  dhis-mobile/dhis-service-mobile/src/main/java/org/hisp/dhis/mobile/api/XmlCreatorService.java


--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk

Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'dhis-mobile/dhis-service-mobile/src/main/java/org/hisp/dhis/mobile/SmsService.java'
--- dhis-mobile/dhis-service-mobile/src/main/java/org/hisp/dhis/mobile/SmsService.java	2010-06-03 07:25:02 +0000
+++ dhis-mobile/dhis-service-mobile/src/main/java/org/hisp/dhis/mobile/SmsService.java	2010-06-07 19:00:02 +0000
@@ -147,7 +147,7 @@
             {
                 serv.stopService();
                 setServiceStatus( false );
-                return "";
+                return "SERVICE STOPPED";
             } catch ( Exception ex )
             {
                 ex.printStackTrace();
@@ -198,6 +198,7 @@
     {
         try
         {
+            getService().getLogger().logInfo( "Starting processing message", null, null );
             InboundBinaryMessage binaryMsg = (InboundBinaryMessage) message;
             byte[] compressedData = binaryMsg.getDataBytes();
             String unCompressedText = new String( Compressor.decompress( compressedData ), "UTF-8" );
@@ -205,6 +206,7 @@
             String sender = binaryMsg.getOriginator();
             Date sendTime = binaryMsg.getDate();
             saveData( sender, sendTime, unCompressedText );
+            getService().getLogger().logInfo( "Saved Report. Sending Acknowledgement to " + sender, null, null );
             sendAck( sender, "REPORT", unCompressedText );
 
         } catch ( UnsupportedEncodingException uneex )
@@ -213,9 +215,11 @@
             return;
         } catch ( ClassCastException ccex )
         {
+            getService().getLogger().logError( "Error performing ClassCast: ", ccex, null );
             return;
         } catch ( ArithmeticException aex )
         {
+            getService().getLogger().logError( "Error performing arithmatic operation: ", aex, null );
             return;
         }
     }
@@ -265,13 +269,12 @@
     @Override
     public void saveData( String mobileNumber, Date sendTime, String data )
     {
-        //TODO: remaining save
         xmlCreatorService.setPhoneNumber( mobileNumber );
         SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd-HH-mm-ss" );
         String timeStamp = dateFormat.format( sendTime );
         xmlCreatorService.setSendTime( timeStamp );
         xmlCreatorService.setInfo( data );
-        xmlCreatorService.run();
+        xmlCreatorService.run(); //should be made thread-safe
         mobileImportService.importAllFiles();
     }
 
@@ -390,7 +393,6 @@
                         gateway.setSimPin( pin );
                     }
 
-                    gateway.setProtocol( Protocols.PDU );
                     if ( inbound.equalsIgnoreCase( "yes" ) )
                     {
                         gateway.setInbound( true );
@@ -414,13 +416,13 @@
                     getService().getLogger().logInfo( "SMSServer: added gateway " + i + " / ", null, null );
                 } catch ( Exception e )
                 {
-                    getService().getLogger().logError( "SMSServer: Unknown Gateway in configuration file!", null, null );
+                    getService().getLogger().logError( "SMSServer: Unknown Gateway in configuration file!, " + e.getMessage(), null, null );
                     e.printStackTrace();
                 }
             }
             gatewayLoaded = true;
             //</editor-fold>
-            return "";
+            return "SUCCESSFULLY STARTED SERVICE";
         } else
         {
             return "ERROR LOADING CONFIGURATION FILE";
@@ -459,6 +461,7 @@
                 try
                 {
                     getService().deleteMessage( msg );
+                    getService().getLogger().logInfo( "Deleted message", null, null );
                 } catch ( Exception e )
                 {
                     getService().getLogger().logError( "Error deleting received message!", e, null );

=== modified file 'dhis-mobile/dhis-service-mobile/src/main/java/org/hisp/dhis/mobile/api/DefaultMobileImportService.java'
--- dhis-mobile/dhis-service-mobile/src/main/java/org/hisp/dhis/mobile/api/DefaultMobileImportService.java	2010-06-03 07:25:02 +0000
+++ dhis-mobile/dhis-service-mobile/src/main/java/org/hisp/dhis/mobile/api/DefaultMobileImportService.java	2010-06-07 19:00:02 +0000
@@ -27,7 +27,6 @@
 package org.hisp.dhis.mobile.api;
 
 
-
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
@@ -59,10 +58,12 @@
 import org.hisp.dhis.period.MonthlyPeriodType;
 import org.hisp.dhis.period.Period;
 import org.hisp.dhis.period.PeriodService;
+import org.hisp.dhis.period.PeriodType;
 import org.hisp.dhis.source.Source;
 import org.hisp.dhis.user.User;
 import org.hisp.dhis.user.UserCredentials;
 import org.hisp.dhis.user.UserStore;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
@@ -83,6 +84,11 @@
     @Autowired
     private LocationManager locationManager;
 
+    public void setLocationManager( LocationManager locationManager )
+    {
+        this.locationManager = locationManager;
+    }
+
     private UserStore userStore;
 
     public void setUserStore( UserStore userStore )
@@ -147,13 +153,14 @@
 
         List<User> allUsers = new ArrayList<User>( userStore.getAllUsers() );
 
-        User selectedUser = new User();
+        User selectedUser = null;
 
         for ( User user : allUsers )
         {
             if ( user.getPhoneNumber() != null && user.getPhoneNumber().equalsIgnoreCase( mobileNumber ) )
             {
                 selectedUser = user;
+                break;
             }
         }
 
@@ -168,14 +175,18 @@
         SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd" );
 
         List<Period> monthlyPeriods = null;
+        PeriodType pt = null;
         if ( periodType.equals( "3" ) )
         {
-            monthlyPeriods = new ArrayList<Period>( periodService.getPeriodsByPeriodType( new MonthlyPeriodType() ) );
+            pt = new MonthlyPeriodType();
+            monthlyPeriods = new ArrayList<Period>( periodService.getPeriodsByPeriodType( pt ) );
+
         } else
         {
             if ( periodType.equals( "1" ) )
             {
-                monthlyPeriods = new ArrayList<Period>( periodService.getPeriodsByPeriodType( new DailyPeriodType() ) );
+                pt = new DailyPeriodType();
+                monthlyPeriods = new ArrayList<Period>( periodService.getPeriodsByPeriodType( pt ) );
             }
         }
 
@@ -188,8 +199,30 @@
             }
         }
 
-        return null;
-
+        Period period = pt.createPeriod( dateFormat.parse( startDate ) );
+        period = reloadPeriodForceAdd( period );
+        periodService.addPeriod( period );
+
+        return period;
+    }
+
+    private final Period reloadPeriod( Period period )
+    {
+        return periodService.getPeriod( period.getStartDate(), period.getEndDate(), period.getPeriodType() );
+    }
+
+    private final Period reloadPeriodForceAdd( Period period )
+    {
+        Period storedPeriod = reloadPeriod( period );
+
+        if ( storedPeriod == null )
+        {
+            periodService.addPeriod( period );
+
+            return period;
+        }
+
+        return storedPeriod;
     }
 
     @Override
@@ -449,6 +482,7 @@
     }
 
     @Override
+    @Transactional
     public void importAllFiles()
     {
         try

=== modified file 'dhis-mobile/dhis-service-mobile/src/main/java/org/hisp/dhis/mobile/api/XmlCreatorService.java'
--- dhis-mobile/dhis-service-mobile/src/main/java/org/hisp/dhis/mobile/api/XmlCreatorService.java	2010-06-03 07:25:02 +0000
+++ dhis-mobile/dhis-service-mobile/src/main/java/org/hisp/dhis/mobile/api/XmlCreatorService.java	2010-06-07 19:00:02 +0000
@@ -84,6 +84,7 @@
     @Override
     public void run()
     {
+        System.out.println( "Info to convert to XML: " + info );
         String dhis2Home = System.getenv( "DHIS2_HOME" );
         String[] text = info.split( "#" );
         String msgVersion = text[0];