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
00064 public static String OK_MESSAGE;
00065 public static String NOK_MESSAGE;
00066
00067 private static JournalManager manager;
00068 private JournalQueryManager queryManager;
00069 private Array journalRendererList;
00070
00071 private JournalManager() {
00072 OK_MESSAGE = INTMOKMESSAGE;
00073 NOK_MESSAGE = INTMNOKMESSAGE;
00074 journalRendererList = new Array(10);
00075 queryManager = new JournalQueryManager();
00076 try {
00077 queryManager.createJournalTable();
00078 } catch (Exception e) {
00079 LogManager.traceError(LogServices.WEBSERVICE, e);
00080 }
00081 }
00082
00083 public static JournalManager getManager() {
00084 if (manager == null) {
00085 synchronized(JournalManager.class) {
00086 if (manager == null) {
00087 manager = new JournalManager();
00088 }
00089 }
00090 }
00091 return manager;
00092 }
00093
00094 public void registerJournalLogRenderer(JournalLogRenderer renderer) {
00095 journalRendererList.add(renderer);
00096 }
00097
00098 public void clearJournalLogRendererForService(String serviceName){
00099 Array temp = getRendererList();
00100 JournalLogRenderer renderer = null;
00101 for(int i=0;i<temp.size();i++){
00102 renderer = (JournalLogRenderer)temp.get(i);
00103 if(renderer.getSyncName().equals(serviceName)){
00104 JournalManager.getManager().deleteAllJournalEntryForService(renderer.getSyncName());
00105 journalRendererList.remove(i);
00106 }
00107 }
00108
00109 }
00110
00111 public Array getRendererList() {
00112 return journalRendererList;
00113 }
00114
00115 public void saveJournalEntry(String serviceName, short id, String data, int status) {
00116 try {
00117
00118 if (data.length() > 200) {
00119 data = data.substring(0, 200);
00120 }
00121 JournalEntry entry = new JournalEntry(serviceName, id, data, status, SystemAPI.getManager().currentTimeInMillis());
00122 queryManager.createOrUpdate(entry);
00123 } catch (Exception e) {
00124 LogManager.traceError(LogServices.WEBSERVICE, e);
00125 }
00126 }
00127
00128
00129 public JournalEntry[] getAllJournalEntryForService(String serviceName) {
00130 try {
00131 org.openmobileis.common.util.collection.Array result = queryManager.getAllEntryForService(serviceName);
00132 JournalEntry[] entries = new JournalEntry[result.size()];
00133 result.toArray(entries);
00134 return entries;
00135 } catch (Exception e) {
00136 LogManager.traceError(LogServices.WEBSERVICE, e);
00137 }
00138 return null;
00139 }
00140
00141
00142 public void deleteAllJournalEntryForService(String serviceName) {
00143 try {
00144 queryManager.deleteAllEntryForService(serviceName);
00145 } catch (Exception e) {
00146 LogManager.traceError(LogServices.WEBSERVICE, e);
00147 }
00148 }
00149
00150
00151
00152
00153 public String getErrorMessageForSynchroStatus (int status) {
00154 String ret = JournalManager.STATUS_UNKNOWN;
00155 switch (status) {
00156 case Status.STATUS_SYNC_IN_PROGRESS:
00157 ret = JournalManager.STATUS_SYNC_IN_PROGRESS;
00158 break;
00159 case Status.STATUS_OK:
00160 ret = JournalManager.STATUS_OK;
00161 break;
00162 case Status.STATUS_NO_CONTENT:
00163 ret = JournalManager.STATUS_NO_CONTENT;
00164 break;
00165 case Status.STATUS_PARTIAL_CONTENT:
00166 ret = JournalManager.STATUS_PARTIAL_CONTENT;
00167 break;
00168 case Status.STATUS_WRONG_FORMAT:
00169 ret = JournalManager.STATUS_WRONG_FORMAT;
00170 break;
00171 case Status.STATUS_UNAUTHORIZED:
00172 ret = JournalManager.STATUS_UNAUTHORIZED;
00173 break;
00174 case Status.STATUS_NOT_FOUND:
00175 ret = JournalManager.STATUS_NOT_FOUND;
00176 break;
00177 case Status.STATUS_AUTHENTIFICATION_REQUIRED:
00178 ret = JournalManager.STATUS_AUTHENTIFICATION_REQUIRED;
00179 break;
00180 case Status.STATUS_TOO_LARGE:
00181 ret = JournalManager.STATUS_TOO_LARGE;
00182 break;
00183 case Status.STATUS_UNSUPPORTED_MEDIA:
00184 ret = JournalManager.STATUS_UNSUPPORTED_MEDIA;
00185 break;
00186 case Status.STATUS_EXIST_TARGET:
00187 ret = JournalManager.STATUS_EXIST_TARGET;
00188 break;
00189 case Status.STATUS_DEVICE_FULL:
00190 ret = JournalManager.STATUS_DEVICE_FULL;
00191 break;
00192 case Status.STATUS_FAILED:
00193 ret = JournalManager.STATUS_FAILED;
00194 break;
00195 case Status.STATUS_COMMAND_NOT_IMPLEMENTED:
00196 ret = JournalManager.STATUS_COMMAND_NOT_IMPLEMENTED;
00197 break;
00198 case Status.STATUS_SYNCHRO_CONFLIC:
00199 ret = JournalManager.STATUS_SYNCHRO_CONFLIC;
00200 break;
00201 }
00202 return ret;
00203 }
00204
00205 }