JournalManager.java

00001 /*
00002  * OpenMobileIS - a free Java(TM) Framework for mobile applications Java(TM)
00003  * Copyright (C) 2004-2006 Philippe Delrieu
00004  * All rights reserved.
00005  * Contact: pdelrieu@openmobileis.org
00006  *
00007  * This library is free software; you can redistribute it and/or
00008  * modify it under the terms of the GNU Lesser General Public
00009  * License as published by the Free Software Foundation; either
00010  * version 2.1 of the License, or any later version.
00011  *
00012  * This library is distributed in the hope that it will be useful,
00013  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00014  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00015  * Lesser General Public License for more details.
00016  *
00017  * You should have received a copy of the GNU Lesser General Public
00018  * License along with this library; if not, write to the Free Software
00019  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
00020  * USA
00021  *
00022  *  Author : Philippe Delrieu
00023  * 
00024  */
00025 
00026 package org.openmobileis.synchro.journal;
00027 
00028 import org.openmobileis.common.util.collection.Array;
00029 import org.openmobileis.common.util.log.*;
00030 import org.openmobileis.synchro.openmsp.protocol.Status;
00031 
00041 public class JournalManager {
00042         private static final String INTMOKMESSAGE="OK";
00043         private static final String INTMNOKMESSAGE="echec";
00044    
00045 
00046   public static String STATUS_SYNC_IN_PROGRESS="en cours";
00047   public static String STATUS_OK = "OK";
00048   public static String STATUS_NO_CONTENT = "pas de contenu";
00049   public static String STATUS_PARTIAL_CONTENT = "contenu partiel";
00050   public static String STATUS_WRONG_FORMAT = "erreur:format de fichier incorrecte";
00051   public static String STATUS_UNAUTHORIZED = "erreur d'authentification";
00052   public static String STATUS_NOT_FOUND = "erreur : service non touvé.";
00053   public static String STATUS_AUTHENTIFICATION_REQUIRED = "erreur : authorisation requise.";
00054   public static String STATUS_TOO_LARGE = "erreur : mémoire insuffisante.";
00055   public static String STATUS_UNSUPPORTED_MEDIA = "erreur : format de fichier non supporté";
00056   public static String STATUS_EXIST_TARGET = "erreur de protocol";
00057   public static String STATUS_DEVICE_FULL = "erreur : mémoire insuffisante.";
00058   public static String STATUS_FAILED = "erreur durant la synchronisation";
00059   public static String STATUS_COMMAND_NOT_IMPLEMENTED = "erreur : commande non supportée.";
00060   public static String STATUS_SYNCHRO_CONFLIC = "erreur : conflit de synchronisation.";
00061   public static String STATUS_UNKNOWN = "status non reconnu.";
00062         
00063         public static String OK_MESSAGE;
00064         public static String NOK_MESSAGE;
00065         
00066   private static JournalManager manager;
00067   private JournalQueryManager queryManager;
00068   private Array journalRendererList;
00069 
00070   private JournalManager() {
00071         OK_MESSAGE = INTMOKMESSAGE;
00072         NOK_MESSAGE = INTMNOKMESSAGE;
00073     journalRendererList = new Array(10);
00074     queryManager = new JournalQueryManager();
00075     try {
00076       queryManager.createJournalTable();
00077     } catch (Exception e) {
00078       LogManager.traceError(LogServices.WEBSERVICE, e);
00079     }
00080   }
00081 
00082   public static JournalManager getManager() {
00083     if (manager == null)  {
00084       synchronized(JournalManager.class)  {
00085         if (manager == null)  {
00086           manager = new JournalManager();
00087         }
00088       }
00089     }
00090     return manager;
00091   }
00092 
00093   public void registerJournalLogRenderer(JournalLogRenderer renderer) {
00094     journalRendererList.add(renderer);
00095   }
00096   
00097   public void clearJournalLogRendererForService(String serviceName){
00098           Array temp = getRendererList();
00099           JournalLogRenderer renderer = null;
00100           for(int i=0;i<temp.size();i++){
00101                         renderer = (JournalLogRenderer)temp.get(i);
00102                         if(renderer.getSyncName().equals(serviceName)){
00103                                 JournalManager.getManager().deleteAllJournalEntryForService(renderer.getSyncName());
00104                                 journalRendererList.remove(i);
00105                         }
00106           }
00107           
00108   }
00109 
00110   public Array getRendererList() {
00111     return journalRendererList;
00112   }
00113 
00114   public void saveJournalEntry(String serviceName, short id, String data, int status)  {
00115     try {
00116       // check data length
00117       if (data.length() > 200) {
00118         data = data.substring(0, 200);
00119       }
00120       JournalEntry entry = new JournalEntry(serviceName, id, data, status, org.openmobileis.embedded.util.SystemAPI.currentTimeInMillis());
00121       queryManager.createOrUpdate(entry);
00122     } catch (Exception e) {
00123       LogManager.traceError(LogServices.WEBSERVICE, e);
00124     }
00125   }
00126 
00127 
00128   public JournalEntry[] getAllJournalEntryForService(String serviceName)  {
00129     try {
00130       org.openmobileis.common.util.collection.Array result = queryManager.getAllEntryForService(serviceName);
00131       JournalEntry[] entries = new JournalEntry[result.size()];
00132       result.toArray(entries);
00133       return entries;
00134     } catch (Exception e) {
00135       LogManager.traceError(LogServices.WEBSERVICE, e);
00136     }
00137     return null;
00138   }
00139 
00140 
00141   public void deleteAllJournalEntryForService(String serviceName)  {
00142     try {
00143       queryManager.deleteAllEntryForService(serviceName);
00144     } catch (Exception e) {
00145       LogManager.traceError(LogServices.WEBSERVICE, e);
00146     }
00147   }
00148 
00149   /*
00150   * Return error message from a status
00151   */
00152   public String getErrorMessageForSynchroStatus (int status) {
00153     String ret = JournalManager.STATUS_UNKNOWN;
00154     switch (status) {
00155     case Status.STATUS_SYNC_IN_PROGRESS:
00156       ret = JournalManager.STATUS_SYNC_IN_PROGRESS;
00157       break;
00158     case Status.STATUS_OK:
00159     ret = JournalManager.STATUS_OK;
00160     break;
00161     case Status.STATUS_NO_CONTENT:
00162     ret = JournalManager.STATUS_NO_CONTENT;
00163     break;
00164     case Status.STATUS_PARTIAL_CONTENT:
00165     ret = JournalManager.STATUS_PARTIAL_CONTENT;
00166     break;
00167     case Status.STATUS_WRONG_FORMAT:
00168     ret = JournalManager.STATUS_WRONG_FORMAT;
00169     break;
00170     case Status.STATUS_UNAUTHORIZED:
00171     ret = JournalManager.STATUS_UNAUTHORIZED;
00172     break;
00173    case Status.STATUS_NOT_FOUND:
00174    ret = JournalManager.STATUS_NOT_FOUND;
00175    break;
00176     case Status.STATUS_AUTHENTIFICATION_REQUIRED:
00177     ret = JournalManager.STATUS_AUTHENTIFICATION_REQUIRED;
00178     break;
00179     case Status.STATUS_TOO_LARGE:
00180     ret = JournalManager.STATUS_TOO_LARGE;
00181     break;
00182     case Status.STATUS_UNSUPPORTED_MEDIA:
00183     ret = JournalManager.STATUS_UNSUPPORTED_MEDIA;
00184     break;
00185     case Status.STATUS_EXIST_TARGET:
00186     ret = JournalManager.STATUS_EXIST_TARGET;
00187     break;
00188     case Status.STATUS_DEVICE_FULL:
00189     ret = JournalManager.STATUS_DEVICE_FULL;
00190     break;
00191     case Status.STATUS_FAILED:
00192     ret = JournalManager.STATUS_FAILED;
00193     break;
00194     case Status.STATUS_COMMAND_NOT_IMPLEMENTED:
00195     ret = JournalManager.STATUS_COMMAND_NOT_IMPLEMENTED;
00196     break;
00197     case Status.STATUS_SYNCHRO_CONFLIC:
00198     ret = JournalManager.STATUS_SYNCHRO_CONFLIC;
00199     break;
00200     }
00201     return ret;
00202   }
00203 
00204 }

Generated on Tue May 22 23:01:10 2007 for OpenMobileIS by  doxygen 1.5.1-p1