00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
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.embedded.util.SystemAPI;
00031 import org.openmobileis.synchro.openmsp.protocol.Status;
00032
00042 public class JournalManager {
00043 private static final String INTMOKMESSAGE="OK";
00044 private static final String INTMNOKMESSAGE="echec";
00045
00046
00047 public static String STATUS_SYNC_IN_PROGRESS="en cours";
00048 public static String STATUS_OK = "OK";
00049 public static String STATUS_NO_CONTENT = "pas de contenu";
00050 public static String STATUS_PARTIAL_CONTENT = "contenu partiel";
00051 public static String STATUS_WRONG_FORMAT = "erreur:format de fichier incorrecte";
00052 public static String STATUS_UNAUTHORIZED = "erreur d'authentification";
00053 public static String STATUS_NOT_FOUND = "erreur : service non touvé.";
00054 public static String STATUS_AUTHENTIFICATION_REQUIRED = "erreur : authorisation requise.";
00055 public static String STATUS_TOO_LARGE = "erreur : mémoire insuffisante.";
00056 public static String STATUS_UNSUPPORTED_MEDIA = "erreur : format de fichier non supporté.";
00057 public static String STATUS_EXIST_TARGET = "erreur de protocol";
00058 public static String STATUS_DEVICE_FULL = "erreur : mémoire insuffisante.";
00059 public static String STATUS_FAILED = "erreur durant la synchronisation";
00060 public static String STATUS_COMMAND_NOT_IMPLEMENTED = "erreur : commande non supportée.";
00061 public static String STATUS_SYNCHRO_CONFLIC = "erreur : conflit de synchronisation.";
00062 public static String STATUS_UNKNOWN = "status non reconnu.";
00063 public static String STATUS_OK_RESTART_APPLI = "L'application a été mise à jour. Redémarrage en cours. Veuillez patienter.";
00064
00065 public static String OK_MESSAGE;
00066 public static String NOK_MESSAGE;
00067
00068 private static JournalManager manager;
00069 private JournalQueryManager queryManager;
00070 private Array journalRendererList;
00071
00072 private JournalManager() {
00073 OK_MESSAGE = INTMOKMESSAGE;
00074 NOK_MESSAGE = INTMNOKMESSAGE;
00075 journalRendererList = new Array(10);
00076 queryManager = new JournalQueryManager();
00077 try {
00078 queryManager.createJournalTable();
00079 } catch (Exception e) {
00080 LogManager.traceError(LogServices.WEBSERVICE, e);
00081 }
00082 }
00083
00084 public static JournalManager getManager() {
00085 if (manager == null) {
00086 synchronized(JournalManager.class) {
00087 if (manager == null) {
00088 manager = new JournalManager();
00089 }
00090 }
00091 }
00092 return manager;
00093 }
00094
00095 public void registerJournalLogRenderer(JournalLogRenderer renderer) {
00096 journalRendererList.add(renderer);
00097 }
00098
00099 public void clearJournalLogRendererForService(String serviceName){
00100 Array temp = getRendererList();
00101 JournalLogRenderer renderer = null;
00102 for(int i=0;i<temp.size();i++){
00103 renderer = (JournalLogRenderer)temp.get(i);
00104 if(renderer.getSyncName().equals(serviceName)){
00105 JournalManager.getManager().deleteAllJournalEntryForService(renderer.getSyncName());
00106 journalRendererList.remove(i);
00107 }
00108 }
00109
00110 }
00111
00112 public Array getRendererList() {
00113 return journalRendererList;
00114 }
00115
00116 public void saveJournalEntry(String serviceName, short id, String data, int status) {
00117 try {
00118
00119 if (data.length() > 200) {
00120 data = data.substring(0, 200);
00121 }
00122 JournalEntry entry = new JournalEntry(serviceName, id, data, status, SystemAPI.getManager().currentTimeInMillis());
00123 queryManager.createOrUpdate(entry);
00124 } catch (Exception e) {
00125 LogManager.traceError(LogServices.WEBSERVICE, e);
00126 }
00127 }
00128
00129
00130 public JournalEntry[] getAllJournalEntryForService(String serviceName) {
00131 try {
00132 org.openmobileis.common.util.collection.Array result = queryManager.getAllEntryForService(serviceName);
00133 JournalEntry[] entries = new JournalEntry[result.size()];
00134 result.toArray(entries);
00135 return entries;
00136 } catch (Exception e) {
00137 LogManager.traceError(LogServices.WEBSERVICE, e);
00138 }
00139 return null;
00140 }
00141
00142
00143 public void deleteAllJournalEntryForService(String serviceName) {
00144 try {
00145 queryManager.deleteAllEntryForService(serviceName);
00146 } catch (Exception e) {
00147 LogManager.traceError(LogServices.WEBSERVICE, e);
00148 }
00149 }
00150
00151
00152
00153
00154 public String getErrorMessageForSynchroStatus (int status) {
00155 String ret = JournalManager.STATUS_UNKNOWN;
00156 switch (status) {
00157 case Status.STATUS_SYNC_IN_PROGRESS:
00158 ret = JournalManager.STATUS_SYNC_IN_PROGRESS;
00159 break;
00160 case Status.STATUS_OK:
00161 ret = JournalManager.STATUS_OK;
00162 break;
00163 case Status.STATUS_NO_CONTENT:
00164 ret = JournalManager.STATUS_NO_CONTENT;
00165 break;
00166 case Status.STATUS_PARTIAL_CONTENT:
00167 ret = JournalManager.STATUS_PARTIAL_CONTENT;
00168 break;
00169 case Status.STATUS_WRONG_FORMAT:
00170 ret = JournalManager.STATUS_WRONG_FORMAT;
00171 break;
00172 case Status.STATUS_UNAUTHORIZED:
00173 ret = JournalManager.STATUS_UNAUTHORIZED;
00174 break;
00175 case Status.STATUS_NOT_FOUND:
00176 ret = JournalManager.STATUS_NOT_FOUND;
00177 break;
00178 case Status.STATUS_AUTHENTIFICATION_REQUIRED:
00179 ret = JournalManager.STATUS_AUTHENTIFICATION_REQUIRED;
00180 break;
00181 case Status.STATUS_TOO_LARGE:
00182 ret = JournalManager.STATUS_TOO_LARGE;
00183 break;
00184 case Status.STATUS_UNSUPPORTED_MEDIA:
00185 ret = JournalManager.STATUS_UNSUPPORTED_MEDIA;
00186 break;
00187 case Status.STATUS_EXIST_TARGET:
00188 ret = JournalManager.STATUS_EXIST_TARGET;
00189 break;
00190 case Status.STATUS_DEVICE_FULL:
00191 ret = JournalManager.STATUS_DEVICE_FULL;
00192 break;
00193 case Status.STATUS_FAILED:
00194 ret = JournalManager.STATUS_FAILED;
00195 break;
00196 case Status.STATUS_COMMAND_NOT_IMPLEMENTED:
00197 ret = JournalManager.STATUS_COMMAND_NOT_IMPLEMENTED;
00198 break;
00199 case Status.STATUS_SYNCHRO_CONFLIC:
00200 ret = JournalManager.STATUS_SYNCHRO_CONFLIC;
00201 break;
00202 case Status.STATUS_OK_RESTART_APPLICATION:
00203 ret = JournalManager.STATUS_OK_RESTART_APPLI;
00204 break;
00205 }
00206 return ret;
00207 }
00208
00209 }