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 Array getRendererList() {
00098     return journalRendererList;
00099   }
00100 
00101   public void saveJournalEntry(String serviceName, short id, String data, int status)  {
00102     try {
00103       // check data length
00104       if (data.length() > 200) {
00105         data = data.substring(0, 200);
00106       }
00107       JournalEntry entry = new JournalEntry(serviceName, id, data, status, org.openmobileis.embedded.util.SystemAPI.currentTimeInMillis());
00108       queryManager.createOrUpdate(entry);
00109     } catch (Exception e) {
00110       LogManager.traceError(LogServices.WEBSERVICE, e);
00111     }
00112   }
00113 
00114 
00115   public JournalEntry[] getAllJournalEntryForService(String serviceName)  {
00116     try {
00117       org.openmobileis.common.util.collection.Array result = queryManager.getAllEntryForService(serviceName);
00118       JournalEntry[] entries = new JournalEntry[result.size()];
00119       result.toArray(entries);
00120       return entries;
00121     } catch (Exception e) {
00122       LogManager.traceError(LogServices.WEBSERVICE, e);
00123     }
00124     return null;
00125   }
00126 
00127 
00128   public void deleteAllJournalEntryForService(String serviceName)  {
00129     try {
00130       queryManager.deleteAllEntryForService(serviceName);
00131     } catch (Exception e) {
00132       LogManager.traceError(LogServices.WEBSERVICE, e);
00133     }
00134   }
00135 
00136   /*
00137   * Return error message from a status
00138   */
00139   public String getErrorMessageForSynchroStatus (int status) {
00140     String ret = JournalManager.STATUS_UNKNOWN;
00141     switch (status) {
00142     case Status.STATUS_SYNC_IN_PROGRESS:
00143       ret = JournalManager.STATUS_SYNC_IN_PROGRESS;
00144       break;
00145     case Status.STATUS_OK:
00146     ret = JournalManager.STATUS_OK;
00147     break;
00148     case Status.STATUS_NO_CONTENT:
00149     ret = JournalManager.STATUS_NO_CONTENT;
00150     break;
00151     case Status.STATUS_PARTIAL_CONTENT:
00152     ret = JournalManager.STATUS_PARTIAL_CONTENT;
00153     break;
00154     case Status.STATUS_WRONG_FORMAT:
00155     ret = JournalManager.STATUS_WRONG_FORMAT;
00156     break;
00157     case Status.STATUS_UNAUTHORIZED:
00158     ret = JournalManager.STATUS_UNAUTHORIZED;
00159     break;
00160    case Status.STATUS_NOT_FOUND:
00161    ret = JournalManager.STATUS_NOT_FOUND;
00162    break;
00163     case Status.STATUS_AUTHENTIFICATION_REQUIRED:
00164     ret = JournalManager.STATUS_AUTHENTIFICATION_REQUIRED;
00165     break;
00166     case Status.STATUS_TOO_LARGE:
00167     ret = JournalManager.STATUS_TOO_LARGE;
00168     break;
00169     case Status.STATUS_UNSUPPORTED_MEDIA:
00170     ret = JournalManager.STATUS_UNSUPPORTED_MEDIA;
00171     break;
00172     case Status.STATUS_EXIST_TARGET:
00173     ret = JournalManager.STATUS_EXIST_TARGET;
00174     break;
00175     case Status.STATUS_DEVICE_FULL:
00176     ret = JournalManager.STATUS_DEVICE_FULL;
00177     break;
00178     case Status.STATUS_FAILED:
00179     ret = JournalManager.STATUS_FAILED;
00180     break;
00181     case Status.STATUS_COMMAND_NOT_IMPLEMENTED:
00182     ret = JournalManager.STATUS_COMMAND_NOT_IMPLEMENTED;
00183     break;
00184     case Status.STATUS_SYNCHRO_CONFLIC:
00185     ret = JournalManager.STATUS_SYNCHRO_CONFLIC;
00186     break;
00187     }
00188     return ret;
00189   }
00190 
00191 }

Generated on Mon Dec 4 11:03:27 2006 for OpenMobileIS by  doxygen 1.5.1-p1