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.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       // check data length
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   * Return error message from a status
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 }

Generated on Mon Jan 14 17:29:48 2008 for OpenMobileIS by  doxygen 1.5.4