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.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
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
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 }