Changeset 18

Show
Ignore:
Timestamp:
01/23/06 13:11:30
Author:
douglm
Message:

Moved many global preferences into the database as a BwSystem? object.
Added default tzid - data restore now sets times to that default

Commented out some global prefs.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/calendar3/.classpath

    r2 r18  
    6161        <classpathentry kind="lib" path="lib/xmlParserAPIs.jar"/> 
    6262        <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> 
    63         <classpathentry kind="lib" path="lib/ical4j-0.9.17.jar"/> 
    6463        <classpathentry kind="lib" path="lib/commons/commons-httpclient-3.0.jar"/> 
     64        <classpathentry kind="lib" path="lib/ical4j-0.9.18.jar"/> 
    6565        <classpathentry kind="output" path="eclipse"/> 
    6666</classpath> 
  • trunk/calendar3/appcommon/build.xml

    r2 r18  
    3838      <pathelement location="${org.bedework.calsvci.jar}"/> 
    3939      <pathelement location="${org.bedework.calfacadeshared.jar}"/> 
     40      <pathelement location="${org.bedework.ical.jar}"/> 
    4041      <pathelement location="${org.bedework.locale.jar}"/> 
    4142    </path> 
  • trunk/calendar3/bldfiles/defjars.properties

    r2 r18  
    5555 
    5656#      ical4j.jar           Used for icalendar translation. 
    57 ical4j.jar.name=ical4j-0.9.17.jar 
     57ical4j.jar.name=ical4j-0.9.18.jar 
    5858ical4j.jar=${org.bedework.default.lib}/${ical4j.jar.name} 
    5959 
  • trunk/calendar3/build.properties

    r2 r18  
    3737product.name=Bedework 
    3838product.version=3 
     39 
     40org.bedework.deploy.log4j.config=no 
  • trunk/calendar3/calCore/resources/properties/hibernate.cfg.xml

    r2 r18  
    3737    <mapping resource="SynchInfo.hbm.xml"/> 
    3838    <mapping resource="SynchState.hbm.xml"/> 
     39    <mapping resource="System.hbm.xml"/> 
    3940    <mapping resource="TimeZone.hbm.xml"/> 
    4041    <mapping resource="Todo.hbm.xml"/> 
  • trunk/calendar3/calCore/src/org/bedework/calcore/hibernate/CalintfImpl.java

    r2 r18  
    6969import org.bedework.calfacade.BwSynchInfo; 
    7070import org.bedework.calfacade.BwSynchState; 
     71import org.bedework.calfacade.BwSystem; 
    7172import org.bedework.calfacade.BwTimeZone; 
    7273import org.bedework.calfacade.BwUser; 
     
    127128  private boolean debug; 
    128129 
     130  private BwSystem syspars; 
     131 
    129132  private BwStats stats = new BwRWStats(); 
    130133 
     
    141144  private AccessUtil access; 
    142145 
    143   /* From core environment properties *
     146  /* From core environment properties *
    144147  private String systemId; 
    145148 
    146149  private String publicCalendarRoot; 
    147   private String publicCalendarRootPath; 
    148150  private String userCalendarRoot; 
    149   private String userCalendarRootPath; 
    150151  private String userDefaultCalendar; 
    151152  private String defaultTrashCalendar; 
     153  */ 
     154  private String publicCalendarRootPath; 
     155  private String userCalendarRootPath; 
    152156 
    153157  /** Ensure we don't open while open 
     
    261265 
    262266      /** Define the roots of the calendars. 
    263        *
     267       *
    264268      publicCalendarRoot = CalEnv.getGlobalProperty("public.calroot"); 
    265269      userCalendarRoot = CalEnv.getGlobalProperty("user.calroot"); 
    266270      userDefaultCalendar = CalEnv.getGlobalProperty("default.user.calendar"); 
    267271      defaultTrashCalendar = CalEnv.getGlobalProperty("default.trash.calendar"); 
     272 
     273      systemId = CalEnv.getGlobalProperty("systemid"); 
     274      */ 
    268275    } catch (Throwable t) { 
    269276      throw new CalFacadeException(t); 
    270277    } 
    271278 
    272     publicCalendarRootPath = "/" + publicCalendarRoot; 
    273     userCalendarRootPath = "/" + userCalendarRoot; 
    274  
    275     try { 
    276       systemId = CalEnv.getGlobalProperty("systemid"); 
    277     } catch (Throwable t) { 
    278       throw new CalFacadeException(t); 
    279     } 
     279    publicCalendarRootPath = "/" + getSyspars().getPublicCalendarRoot(); 
     280    userCalendarRootPath = "/" + getSyspars().getUserCalendarRoot(); 
     281    //systemId = getSyspars().getSystemid(); 
    280282 
    281283    if (user == null) { 
     
    350352  } 
    351353 
    352   /** Get the current stats 
    353    * 
    354    * @return BwStats object 
    355    * @throws CalFacadeException if not admin 
    356    */ 
    357354  public BwStats getStats() throws CalFacadeException { 
    358355    return stats; 
    359356  } 
    360357 
    361   /** Get the timezones cache object 
    362    * 
    363    * @return CalTimezones object 
    364    * @throws CalFacadeException if not admin 
    365    */ 
     358  public BwSystem getSyspars() throws CalFacadeException { 
     359    if (syspars == null) { 
     360      String name; 
     361 
     362      try { 
     363        name = CalEnv.getGlobalProperty("system.name"); 
     364      } catch (Throwable t) { 
     365        throw new CalFacadeException(t); 
     366      } 
     367 
     368      sess.namedQuery("getSystemPars"); 
     369 
     370      sess.setString("name", name); 
     371 
     372      syspars = (BwSystem)sess.getUnique(); 
     373 
     374      if (syspars == null) { 
     375        throw new CalFacadeException("No system parameters with name " + name); 
     376      } 
     377       
     378      if (debug) { 
     379        trace("Read system parameters: " + syspars); 
     380      } 
     381    } 
     382    return syspars; 
     383  } 
     384 
    366385  public CalTimezones getTimezones() throws CalFacadeException { 
    367386    return timezones; 
     
    549568 
    550569  public String getSysid() throws CalFacadeException { 
    551     return systemId
     570    return getSyspars().getSystemid()
    552571  } 
    553572 
     
    604623    sess.namedQuery("getCalendarByPath"); 
    605624 
    606     String path =  "/" + userCalendarRoot
     625    String path =  "/" + getSyspars().getUserCalendarRoot()
    607626    sess.setString("path", path); 
    608627 
     
    622641    } 
    623642 
     643    /* Create a folder for the user */ 
    624644    usercal = new BwCalendar(); 
    625645    usercal.setName(user.getAccount()); 
     
    633653    sess.save(userrootcal); 
    634654 
     655    /* Create a default calendar */ 
    635656    BwCalendar cal = new BwCalendar(); 
    636     cal.setName(userDefaultCalendar); 
     657    cal.setName(getSyspars().getUserDefaultCalendar()); 
    637658    cal.setCreator(user); 
    638659    cal.setOwner(user); 
    639660    cal.setPublick(false); 
    640     cal.setPath(path + "/" + userDefaultCalendar); 
     661    cal.setPath(path + "/" + getSyspars().getUserDefaultCalendar()); 
    641662    cal.setCalendar(usercal); 
    642663    cal.setCalendarCollection(true); 
     
    644665 
    645666    /* Add the trash calendar */ 
    646  
    647667    cal = new BwCalendar(); 
    648     cal.setName(defaultTrashCalendar); 
     668    cal.setName(getSyspars().getDefaultTrashCalendar()); 
    649669    cal.setCreator(user); 
    650670    cal.setOwner(user); 
    651671    cal.setPublick(false); 
    652     cal.setPath(path + "/" + defaultTrashCalendar); 
     672    cal.setPath(path + "/" + getSyspars().getDefaultTrashCalendar()); 
     673    cal.setCalendar(usercal); 
     674    cal.setCalendarCollection(true); 
     675    usercal.addChild(cal); 
     676 
     677    /* Add the inbox */ 
     678    cal = new BwCalendar(); 
     679    cal.setName(getSyspars().getUserInbox()); 
     680    cal.setCreator(user); 
     681    cal.setOwner(user); 
     682    cal.setPublick(false); 
     683    cal.setPath(path + "/" + getSyspars().getUserInbox()); 
     684    cal.setCalendar(usercal); 
     685    cal.setCalendarCollection(true); 
     686    usercal.addChild(cal); 
     687 
     688    /* Add the outbox */ 
     689    cal = new BwCalendar(); 
     690    cal.setName(getSyspars().getUserOutbox()); 
     691    cal.setCreator(user); 
     692    cal.setOwner(user); 
     693    cal.setPublick(false); 
     694    cal.setPath(path + "/" + getSyspars().getUserOutbox()); 
    653695    cal.setCalendar(usercal); 
    654696    cal.setCalendarCollection(true); 
     
    907949 
    908950    sb.append("/"); 
    909     sb.append(userCalendarRoot); 
     951    sb.append(getSyspars().getUserCalendarRoot()); 
    910952    sb.append("/"); 
    911953    sb.append(user.getAccount()); 
    912954    sb.append("/"); 
    913     sb.append(userDefaultCalendar); 
     955    sb.append(getSyspars().getUserDefaultCalendar()); 
    914956 
    915957    return getCalendar(sb.toString()); 
     
    920962 
    921963    sb.append("/"); 
    922     sb.append(userCalendarRoot); 
     964    sb.append(getSyspars().getUserCalendarRoot()); 
    923965    sb.append("/"); 
    924966    sb.append(user.getAccount()); 
    925967    sb.append("/"); 
    926     sb.append(defaultTrashCalendar); 
     968    sb.append(getSyspars().getDefaultTrashCalendar()); 
    927969 
    928970    return getCalendar(sb.toString()); 
  • trunk/calendar3/calCore/src/org/bedework/calcore/hibernate/Events.java

    r2 r18  
    966966    } 
    967967 
    968     debugMsg("Try query " + sb.toString()); 
     968    //debugMsg("Try query " + sb.toString()); 
    969969  } 
    970970 
  • trunk/calendar3/calFacade/src/org/bedework/calfacade/CalFacadeException.java

    r2 r18  
    8888      "org.bedework.exception.duplicateguid"; 
    8989 
     90  /** Error reading timezones */ 
     91  public static final String timezonesReadError = 
     92      "org.bedework.error.timezones.readerror"; 
     93 
     94 
     95  private String extra; 
     96 
    9097  /** Constrictor 
    9198   * 
     
    108115    super(s); 
    109116  } 
     117 
     118  /** 
     119   * @param s  - retrieve with getMessage(), property ame 
     120   * @param extra String extra text 
     121   */ 
     122  public CalFacadeException(String s, String extra) { 
     123    super(s); 
     124    this.extra = extra; 
     125  } 
     126 
     127  /** 
     128   * @return String extra text 
     129   */ 
     130  public String getExtra() { 
     131    return extra; 
     132  } 
    110133} 
  • trunk/calendar3/calFacade/src/org/bedework/calfacade/CalFacadeUtil.java

    r2 r18  
    503503  } 
    504504 
     505  /** Given a class name return an object of that class. 
     506   * The class parameter is used to check that the 
     507   * named class is an instance of that class. 
     508   * 
     509   * @param className String class name 
     510   * @param cl   Class expected 
     511   * @return     Object checked to be an instance of that class 
     512   * @throws CalFacadeException 
     513   */ 
     514  public static Object getObject(String className, Class cl) throws CalFacadeException { 
     515    try { 
     516      Object o = Class.forName(className).newInstance(); 
     517 
     518      if (o == null) { 
     519        throw new CalFacadeException("Class " + className + " not found"); 
     520      } 
     521 
     522      if (!cl.isInstance(o)) { 
     523        throw new CalFacadeException("Class " + className + 
     524                                     " is not a subclass of " + 
     525                                     cl.getName()); 
     526      } 
     527 
     528      return o; 
     529    } catch (CalFacadeException ce) { 
     530      throw ce; 
     531    } catch (Throwable t) { 
     532      throw new CalFacadeException(t); 
     533    } 
     534  } 
     535 
    505536  /* ==================================================================== 
    506537             ical utilities 
  • trunk/calendar3/calFacade/src/org/bedework/calfacade/base/CalintfBase.java

    r2 r18  
    6565import org.bedework.calfacade.BwSynchInfo; 
    6666import org.bedework.calfacade.BwSynchState; 
     67import org.bedework.calfacade.BwSystem; 
    6768import org.bedework.calfacade.BwUser; 
    6869import org.bedework.calfacade.CalFacadeAccessException; 
     
    168169  } 
    169170 
     171  public BwSystem getSyspars() throws CalFacadeException { 
     172    return null; 
     173  } 
     174 
    170175  /** Get the timezones cache object 
    171176   * 
  • trunk/calendar3/calFacade/src/org/bedework/calfacade/ifs/Calintf.java

    r2 r18  
    6464import org.bedework.calfacade.BwSynchInfo; 
    6565import org.bedework.calfacade.BwSynchState; 
     66import org.bedework.calfacade.BwSystem; 
    6667import org.bedework.calfacade.BwUser; 
    6768import org.bedework.calfacade.CalFacadeException; 
     
    121122  public BwStats getStats() throws CalFacadeException; 
    122123 
     124  /** Get the system pars 
     125   * 
     126   * @return BwSystem object 
     127   * @throws CalFacadeException if not admin 
     128   */ 
     129  public BwSystem getSyspars() throws CalFacadeException; 
     130 
    123131  /** Get the timezones cache object 
    124132   * 
  • trunk/calendar3/calsvc/src/org/bedework/calsvc/CalSvc.java

    r2 r18  
    7474import org.bedework.calfacade.BwSynchInfo; 
    7575import org.bedework.calfacade.BwSynchState; 
     76import org.bedework.calfacade.BwSystem; 
    7677import org.bedework.calfacade.BwUser; 
    7778import org.bedework.calfacade.CalFacadeAccessException; 
    7879import org.bedework.calfacade.CalFacadeDefs; 
    7980import org.bedework.calfacade.CalFacadeException; 
     81import org.bedework.calfacade.CalFacadeUtil; 
    8082import org.bedework.calfacade.filter.BwFilter; 
    8183import org.bedework.calfacade.ifs.CalTimezones; 
     
    129131   */ 
    130132  private BwUser publicUser; 
     133   
     134  // Set up by call to getCal() 
    131135  private String publicUserAccount; 
    132136 
     
    290294      env = new CalEnv(appPrefix, debug); 
    291295 
    292       publicUserAccount = CalEnv.getGlobalProperty("public.user"); 
     296      //publicUserAccount = CalEnv.getGlobalProperty("public.user"); 
    293297 
    294298      if (pars.isGuest() && (pars.getUser() == null)) { 
     
    325329  } 
    326330 
     331  /** Get the system pars 
     332   * 
     333   * @return BwSystem object 
     334   * @throws CalFacadeException if not admin 
     335   */ 
     336  public BwSystem getSyspars() throws CalFacadeException { 
     337    return getCal().getSyspars(); 
     338  } 
     339 
    327340  public CalTimezones getTimezones() throws CalFacadeException { 
    328341    return getCal().getTimezones(); 
     
    445458 
    446459    try { 
    447       userAuth = (UserAuth)CalEnv.getGlobalObject("userauthclass"
     460      userAuth = (UserAuth)CalFacadeUtil.getObject(getSyspars().getUserauthClass()
    448461                                                  UserAuth.class); 
    449462    } catch (Throwable t) { 
     
    479492 
    480493    try { 
    481       userGroups = (Groups)CalEnv.getGlobalObject("usergroupsclass", Groups.class); 
     494      userGroups = (Groups)CalFacadeUtil.getObject(getSyspars().getUsergroupsClass(), Groups.class); 
    482495      userGroups.init(getGroupsCallBack()); 
    483496    } catch (Throwable t) { 
     
    494507 
    495508    try { 
    496       adminGroups = (Groups)CalEnv.getGlobalObject("admingroupsclass", Groups.class); 
     509      adminGroups = (Groups)CalFacadeUtil.getObject(getSyspars().getAdmingroupsClass(), Groups.class); 
    497510      adminGroups.init(getGroupsCallBack()); 
    498511    } catch (Throwable t) { 
     
    17811794 
    17821795    try { 
    1783       cali = (Calintf)CalEnv.getGlobalObject("calintfclass", 
    1784                                              Calintf.class); 
     1796      cali = (Calintf)CalEnv.getGlobalObject("calintfclass", Calintf.class); 
    17851797    } catch (Throwable t) { 
    17861798      throw new CalFacadeException(t); 
     
    17991811                                      debug); 
    18001812 
     1813      // Prepare for call below. 
     1814      publicUserAccount = cali.getSyspars().getPublicUser(); 
     1815       
    18011816      BwUser auth; 
    18021817      if (isPublicAdmin() || isGuest()) { 
  • trunk/calendar3/config/configs/democal.properties

    r2 r18  
    2424# 
    2525org.bedework.global.hibernate.dialect=org.hibernate.dialect.HSQLDialect 
    26 org.bedework.global.systemid=demobedework@mysite.edu 
    27 org.bedework.global.directory.browsing.disallowed=false 
    28 org.bedework.global.http.connections.peruser=10 
    29 org.bedework.global.http.connections.perhost=50 
    30 org.bedework.global.http.connections=200 
    31  
    32 org.bedework.global.public.calroot=public 
    33 org.bedework.global.user.calroot=user 
    34 org.bedework.global.default.user.calendar=calendar 
    35 org.bedework.global.default.trash.calendar=Trash 
    36 org.bedework.global.public.user=public-user 
    37 org.bedework.global.timezoneroot=timezones 
    38  
    39 org.bedework.global.userauthclass=org.bedework.calcore.hibernate.UserAuthUWDbImpl 
    40 org.bedework.global.mailerclass=org.bedework.mail.DummyMailer 
     26org.bedework.global.system.name=bedework 
     27#org.bedework.global.systemid=demobedework@mysite.edu 
     28#org.bedework.global.directory.browsing.disallowed=false 
     29#org.bedework.global.http.connections.peruser=10 
     30#org.bedework.global.http.connections.perhost=50 
     31#org.bedework.global.http.connections=200 
     32 
     33#org.bedework.global.public.calroot=public 
     34#org.bedework.global.user.calroot=user 
     35#org.bedework.global.default.user.calendar=calendar 
     36#org.bedework.global.default.trash.calendar=Trash 
     37#org.bedework.global.public.user=public-user 
     38#org.bedework.global.timezoneroot=timezones 
     39 
    4140org.bedework.global.calintfclass=org.bedework.calcore.hibernate.CalintfImpl 
    42 org.bedework.global.update.check.interval=5000 
    43 org.bedework.global.admingroupsclass=org.bedework.calcore.hibernate.AdminGroupsDbImpl 
    44 org.bedework.global.usergroupsclass=org.bedework.calcore.hibernate.GroupsDbImpl 
     41 
     42#org.bedework.global.userauthclass=org.bedework.calcore.hibernate.UserAuthUWDbImpl 
     43#org.bedework.global.mailerclass=org.bedework.mail.DummyMailer 
     44#org.bedework.global.admingroupsclass=org.bedework.calcore.hibernate.AdminGroupsDbImpl 
     45#org.bedework.global.usergroupsclass=org.bedework.calcore.hibernate.GroupsDbImpl 
     46#org.bedework.global.update.check.interval=5000 
    4547 
    4648# 
  • trunk/calendar3/docs/todo.txt

    r2 r18  
    55-------------------------------------------------------------------------------- 
    66-------------------------------------------------------------------------------- 
    7 -------------------------------------------------------------------------------- 
    8 The EventAnnotation class is causing multiple queries - (polymorphic queries) 
    9 For example, the hql "select count(*) from BwEvents where ..." 
    10 causes 2 queries and a non-unique result exception 
    11  
    12 Perhaps create a BwEventCommon class then subclass for BwEvent, 
    13 BwEventAnnotation? 
     7svn 
    148-------------------------------------------------------------------------------- 
    159All times should have a timezone - we need to set the default timezone for the 
     
    2822is the container for that stuff. 
    2923-------------------------------------------------------------------------------- 
    30 Acl.encode should not encode Ace with inherited = true 
     24The EventAnnotation class was causing multiple queries - (polymorphic queries) 
     25For example, the hql "select count(*) from BwEvents where ..." 
     26caused 2 queries and a non-unique result exception 
     27 
     28Fixed by changing the hierarchy, making BwEvent a common base class then 
     29subclass for BwEventObj and BwEventAnnotation. 
    3130-------------------------------------------------------------------------------- 
    3231FiltersRule needs to add Inbox 
     
    3534-------------------------------------------------------------------------------- 
    3635lazy="false" is set on calendar objects. 
     36-------------------------------------------------------------------------------- 
     37Acl.encode should not encode Ace with inherited = true 
    3738-------------------------------------------------------------------------------- 
    3839Access control not quite right. The requirements are something like: 
     
    103104-------------------------------------------------------------------------------- 
    104105Remove target from BwEvent? 
    105 -------------------------------------------------------------------------------- 
    106 Events.getEvent by guid/rid/seq fails because we get same guid in different 
    107 users events. Do we enforce absolute uniqueness - probably 
    108  
    109 Should probably remove owner from unique key 
    110106-------------------------------------------------------------------------------- 
    111107We probably need the equivalent of an event info object at the Calintf level to 
  • trunk/calendar3/tools/build.xml

    r2 r18  
    4949      <pathelement location="${org.bedework.calcore.jar}"/> 
    5050      <pathelement location="${org.bedework.access.jar}"/> 
     51      <pathelement location="${org.bedework.appcommon.jar}"/> 
    5152    </path> 
    5253 
  • trunk/calendar3/tools/dumprestore/build.xml

    r2 r18  
    197197      <classpath refid="lib.restore.class.path" /> 
    198198      <arg value="${org.bedework.restore.arg.debug}" /> 
    199       <!-- 
    200       <arg value="-printdata" /> 
    201       --> 
     199      <arg value="-supergroup" /> 
     200      <arg value="${org.bedework.restore.supergroup}" /> 
     201      <arg value="-f" /> 
     202      <arg value="${org.bedework.restore.arg.dumpfile}" /> 
     203      <arg value="${org.bedework.restore.arg.from2p3px}" /> 
     204      <arg line="${org.bedework.restore.arg.fixowner}" /> 
     205      <arg line="${org.bedework.restore.arg.defaultpubliccal}" /> 
     206      <arg line="${org.bedework.restore.arg.timezones}" /> 
     207 
     208      <arg value="-sysname" /> 
     209      <arg value="${org.bedework.restore.arg.sysname}" /> 
     210      <arg value="-tzid" /> 
     211      <arg value="${org.bedework.restore.arg.tzid}" /> 
     212      <arg value="-sysid" /> 
     213      <arg value="${org.bedework.restore.arg.sysid}" /> 
     214 
    202215      <arg value="-publiccalroot" /> 
    203216      <arg value="${org.bedework.env.public.calroot}" /> 
     
    208221      <arg value="-deftrashcal" /> 
    209222      <arg value="${org.bedework.env.default.trash.calendar}" /> 
    210       <arg value="-supergroup" /> 
    211       <arg value="${org.bedework.restore.supergroup}" /> 
    212       <arg value="-f" /> 
    213       <arg value="${org.bedework.restore.arg.dumpfile}" /> 
    214       <arg value="${org.bedework.restore.arg.hib}" /> 
    215       <arg line="${org.bedework.restore.arg.defaultpubliccal}" /> 
     223      <arg value="-definbox" /> 
     224      <arg value="${org.bedework.env.default.user.inbox}" /> 
     225      <arg value="-defoutbox" /> 
     226      <arg value="${org.bedework.env.default.user.outbox}" /> 
     227 
    216228      <arg line="${org.bedework.restore.arg.public.user}" /> 
    217       <arg line="${org.bedework.restore.arg.fixowner}" /> 
    218       <arg value="-sysid" /> 
    219       <arg value="${org.bedework.restore.arg.sysid}" /> 
     229 
     230      <arg line="${org.bedework.restore.arg.dirbrowsing.disallowed}" /> 
     231 
     232      <arg line="${org.bedework.restore.arg.httpconns.peruser}" /> 
     233      <arg line="${org.bedework.restore.arg.httpconns.perhost}" /> 
     234      <arg line="${org.bedework.restore.arg.httpconns}" /> 
     235 
     236      <arg line="${org.bedework.restore.arg.userauthClass}" /> 
     237      <arg line="${org.bedework.restore.arg.mailerClass}" /> 
     238      <arg line="${org.bedework.restore.arg.admingroupsClass}" /> 
     239      <arg line="${org.bedework.restore.arg.usergroupsClass}" /> 
     240      <jvmarg value="-Xrunyjpagent:cpu=times,onexit=cpu" /> 
    220241      <!-- 
    221242      <arg value="-Djava.endorsed.dir=${org.bedework.default.lib}/endorsed"/>--> 
  • trunk/calendar3/tools/properties/dumprestore.properties

    r2 r18  
    3636# -debug or -ndebug 
    3737org.bedework.restore.arg.debug=-debug 
     38org.bedework.restore.arg.from2p3px= 
    3839 
    39 org.bedework.restore.arg.hib=-nhib 
    4040org.bedework.restore.arg.fixcals=-nfixcals 
    4141org.bedework.restore.arg.defaultpubliccal= 
     
    5555org.bedework.restore.arg.jdbcpw= 
    5656 
    57 # ------------------- global properties -------------------------- 
     57# -------------------- System parameters ---------------------------- 
     58org.bedework.restore.arg.sysname=bedework 
     59org.bedework.restore.arg.tzid=America/New_York 
     60org.bedework.restore.arg.sysid=calendar@bedework.org 
     61 
    5862org.bedework.env.public.calroot=public 
    5963org.bedework.env.user.calroot=user 
    6064org.bedework.env.default.user.calendar=calendar 
    6165org.bedework.env.default.trash.calendar=Trash 
     66org.bedework.env.default.user.inbox=Inbox 
     67org.bedework.env.default.user.outbox=Outbox 
    6268 
     69org.bedework.restore.arg.public.user=-pu public-user 
     70 
     71org.bedework.restore.arg.dirbrowsing.disallowed=-dirbrowsing-disallowed false 
     72 
     73org.bedework.restore.arg.httpconns.peruser=-httpconnsperuser 10 
     74org.bedework.restore.arg.httpconns.perhost=-httpconnsperhost 50 
     75org.bedework.restore.arg.httpconns=-httpconns 200 
     76 
     77org.bedework.restore.arg.userauthClass=-userauthClass org.bedework.calcore.hibernate.UserAuthUWDbImpl 
     78org.bedework.restore.arg.mailerClass=-mailerClass org.bedework.mail.DummyMailer 
     79org.bedework.restore.arg.admingroupsClass=-admingroupsClass org.bedework.calcore.hibernate.AdminGroupsDbImpl 
     80org.bedework.restore.arg.usergroupsClass=-usergroupsClass org.bedework.calcore.hibernate.GroupsDbImpl 
     81 
  • trunk/calendar3/tools/src/org/bedework/tools/dumprestore/restore/HibRestore.java

    r2 r18  
    6363import org.bedework.calfacade.BwPrincipal; 
    6464import org.bedework.calfacade.BwSponsor; 
     65import org.bedework.calfacade.BwSystem; 
     66import org.bedework.calfacade.BwTimeZone; 
    6567import org.bedework.calfacade.BwUser; 
    6668import org.bedework.calfacade.BwUserInfo; 
     
    144146    ps.close(); 
    145147 
     148    ps = conn.prepareStatement("delete from bedework_settings"); 
     149    ps.executeUpdate(); 
     150    ps.close(); 
     151 
    146152    ps = conn.prepareStatement("delete from adminGroupMembers"); 
    147153    ps.executeUpdate(); 
     
    211217    ps.executeUpdate(); 
    212218 
    213     if (globals.toHibernate) { 
     219    if (globals.from2p3px) { 
    214220      ps = conn.prepareStatement("delete from filters"); 
    215221      ps.executeUpdate(); 
     
    281287    ps.close(); 
    282288 
    283     if (!globals.toHibernate) { 
     289    if (!globals.from2p3px) { 
    284290      ps = conn.prepareStatement("delete from lastmods"); 
    285291      ps.executeUpdate(); 
     
    306312    } catch (Throwable t) { 
    307313    } 
     314  } 
     315 
     316  public void restoreSyspars(BwSystem o) throws Throwable { 
     317    openSess(); 
     318 
     319    sess.save(o); 
     320 
     321    closeSess(); 
    308322  } 
    309323 
     
    332346  } 
    333347 
     348  public void restoreTimezone(BwTimeZone o) throws Throwable { 
     349    openSess(); 
     350 
     351    sess.save(o); 
     352 
     353    closeSess(); 
     354  } 
     355 
    334356  /* (non-Javadoc) 
    335357   * @see org.bedework.tools.dumprestore.restore.RestoreIntf#restoreAdminGroup(org.bedework.calfacade.svc.BwAdminGroup) 
     
    338360    openSess(); 
    339361 
    340     if (globals.toHibernate) { 
     362    if (globals.from2p3px) { 
    341363      // No id assigned 
    342364      sess.save(o); 
  • trunk/calendar3/tools/src/org/bedework/tools/dumprestore/restore/Restore.java

    r2 r18  
    5454package org.bedework.tools.dumprestore.restore; 
    5555 
     56import org.bedework.appcommon.TimeZonesParser; 
    5657import org.bedework.calfacade.BwCalendar; 
    5758import org.bedework.calfacade.BwUser; 
     
    6364import org.bedework.tools.dumprestore.restore.rules.RestoreRuleSet; 
    6465 
     66import java.io.FileInputStream; 
    6567import java.io.FileReader; 
    6668import java.util.Collection; 
     
    121123 
    122124  void open() throws Throwable { 
    123     globals.timezones = new TimezonesImpl(false, globals.debug); 
    124  
    125125    if (globals.rintf == null) { 
    126126//      globals.rintf = new JdbcRestore(); 
     
    129129      globals.rintf.open(); 
    130130    } 
     131 
     132    globals.timezones = new TimezonesImpl(globals.debug, 
     133                                          globals.getPublicUser(), 
     134                                          globals.rintf); 
     135 
     136    if (globals.from2p3px) { 
     137      // System prefs are set up by run time pars 
     138 
     139      globals.rintf.restoreSyspars(globals.syspars); 
     140    } 
     141 
     142    if (globals.timezonesFilename != null) { 
     143      TimeZonesParser tzp = new TimeZonesParser( 
     144             new FileInputStream(globals.timezonesFilename), 
     145             globals.debug); 
     146 
     147      Collection tzis = tzp.getTimeZones(); 
     148 
     149      Iterator it = tzis.iterator(); 
     150      while (it.hasNext()) { 
     151        TimeZonesParser.TimeZoneInfo tzi = (TimeZonesParser.TimeZoneInfo)it.next(); 
     152 
     153        globals.timezones.saveTimeZone(tzi.tzid, tzi.timezone); 
     154      } 
     155    } 
    131156  } 
    132157 
     
    146171    digester.parse(new FileReader(fileName)); 
    147172 
    148     if (globals.toHibernate) { 
     173    if (globals.from2p3px) { 
    149174      makePrefs(); 
    150175      if (globals.rintf != null) { 
     
    271296      } else if (args[i].equals("-noarg")) { 
    272297        globals.debug = false; 
    273       } else if (argpar("-sysid", args, i)) { 
    274         i++; 
    275         globals.systemId = args[i]; 
    276       } else if (argpar("-publiccalroot", args, i)) { 
    277         i++; 
    278         globals.publicCalendarRoot = args[i]; 
    279298      } else if (argpar("-supergroup", args, i)) { 
    280299        i++; 
     
    284303        globals.defaultPublicCalPath = args[i]; 
    285304        trace("Setting null event calendars to " + args[i]); 
    286       } else if (argpar("-usercalroot", args, i)) { 
    287         i++; 
    288         globals.userCalendarRoot = args[i]; 
    289       } else if (argpar("-defusercal", args, i)) { 
    290         i++; 
    291         globals.userDefaultCalendar = args[i]; 
    292       } else if (argpar("-deftrashcal", args, i)) { 
    293         i++; 
    294         globals.defaultTrashCalendar = args[i]; 
    295305      } else if (argpar("-fixOwner", args, i)) { 
    296306        i++; 
    297307        globals.fixOwnerAccount = args[i]; 
    298       //} else if (args[i].equals("-concatdesc")) { 
    299       //  concatdesc = true; 
    300       //} else if (args[i].equals("-printdata")) { 
    301       //  printData = true; 
    302       } else if (args[i].equals("-hib")) { 
    303         globals.toHibernate = true; 
    304       } else if (args[i].equals("-nhib")) { 
    305         globals.toHibernate = false; 
    306       } else if (argpar("-pu", args, i)) { 
    307         i++; 
    308         globals.publicUserAccount = args[i]; 
    309       //} else if (args[i].equals("-jdbc")) { 
    310       //  jdbcUpdate = true; 
    311       //} else if (args[i].equals("-njdbc")) { 
    312       //  jdbcUpdate = false; 
     308      } else if (args[i].equals("-from2p3px")) { 
     309        globals.from2p3px = true; 
    313310      } else if (argpar("-d", args, i)) { 
    314311        i++; 
     
    326323        i++; 
    327324        fileName = args[i]; 
     325      } else if (argpar("-timezones", args, i)) { 
     326        i++; 
     327        globals.timezonesFilename = args[i]; 
     328 
     329        /* System parameters */ 
     330      } else if (argpar("-sysname", args, i)) { 
     331        i++; 
     332        globals.syspars.setName(args[i]); 
     333      } else if (argpar("-tzid", args, i)) { 
     334        i++; 
     335        globals.syspars.setTzid(args[i]); 
     336      } else if (argpar("-sysid", args, i)) { 
     337        i++; 
     338        globals.syspars.setSystemid(args[i]); 
     339      } else if (argpar("-publiccalroot", args, i)) { 
     340        i++; 
     341        globals.syspars.setPublicCalendarRoot(args[i]); 
     342      } else if (argpar("-usercalroot", args, i)) { 
     343        i++; 
     344        globals.syspars.setUserCalendarRoot(args[i]); 
     345      } else if (argpar("-defusercal", args, i)) { 
     346        i++; 
     347        globals.syspars.setUserDefaultCalendar(args[i]); 
     348      } else if (argpar("-deftrashcal", args, i)) { 
     349        i++; 
     350        globals.syspars.setDefaultTrashCalendar(args[i]); 
     351      } else if (argpar("-definbox", args, i)) { 
     352        i++; 
     353        globals.syspars.setUserInbox(args[i]); 
     354      } else if (argpar("-defoutbox", args, i)) { 
     355        i++; 
     356        globals.syspars.setUserOutbox(args[i]); 
     357 
     358      } else if (argpar("-pu", args, i)) { 
     359        i++; 
     360        globals.syspars.setPublicUser(args[i]); 
     361 
     362      } else if (argpar("-dirbrowsing-disallowed", args, i)) { 
     363        i++; 
     364        globals.syspars.setDirectoryBrowsingDisallowed("true".equals(args[i])); 
     365 
     366      } else if (argpar("-httpconnsperuser", args, i)) { 
     367        i++; 
     368        globals.syspars.setHttpConnectionsPerUser(intPar(args[i])); 
     369      } else if (argpar("-httpconnsperhost", args, i)) { 
     370        i++; 
     371        globals.syspars.setHttpConnectionsPerHost(intPar(args[i])); 
     372      } else if (argpar("-httpconns", args, i)) { 
     373        i++; 
     374        globals.syspars.setHttpConnections(intPar(args[i])); 
     375 
     376      } else if (argpar("-userauthClass", args, i)) { 
     377        i++; 
     378        globals.syspars.setUserauthClass(args[i]); 
     379      } else if (argpar("-mailerClass", args, i)) { 
     380        i++; 
     381        globals.syspars.setMailerClass(args[i]); 
     382      } else if (argpar("-admingroupsClass", args, i)) { 
     383        i++; 
     384        globals.syspars.setAdmingroupsClass(args[i]); 
     385      } else if (argpar("-usergroupsClass", args, i)) { 
     386        i++; 
     387        globals.syspars.setUsergroupsClass(args[i]); 
    328388      } else { 
    329389        error("Illegal argument: " + args[i]); 
     
    334394 
    335395    return true; 
     396  } 
     397 
     398  private int intPar(String par) throws Throwable { 
     399    return Integer.parseInt(par); 
    336400  } 
    337401 
  • trunk/calendar3/tools/src/org/bedework/tools/dumprestore/restore/RestoreGlobals.java

    r2 r18  
    6262import org.bedework.calfacade.BwOrganizer; 
    6363import org.bedework.calfacade.BwSponsor; 
     64import org.bedework.calfacade.BwSystem; 
    6465import org.bedework.calfacade.BwUser; 
    6566import org.bedework.calfacade.BwUserInfo; 
     
    9192  public boolean debugEntity; 
    9293 
     94  /** We can restore timezone info from this file 
     95   */ 
     96  public String timezonesFilename; 
     97 
     98  /** System parameters object */ 
     99  public BwSystem syspars = new BwSystem(); 
     100 
     101  /** * / 
     102  public String publicCalendarRoot; 
     103  /** * / 
     104  public String userCalendarRoot; 
     105  /** * / 
     106  public String userDefaultCalendar; 
     107  /** * / 
     108  public String defaultTrashCalendar; 
     109 
     110  /** Account name for owner of public entities* / 
     111  public String publicUserAccount; 
     112 
     113  /** * / 
     114  public String systemId; // required for fixing guids 
     115 
     116  */ 
     117 
    93118  /** */ 
    94119  public CalTimezones timezones; 
    95120 
    96   /** True if we doing the conversion from 2.3.2 to hibernate (V3) */ 
    97   public boolean toHibernate
     121  /** True if we doing the conversion from 2.3.2 to V3 */ 
     122  public boolean from2p3px
    98123 
    99124  /** When converting put all admin groups into the new group with this name */ 
     
    119144  public BwCalendar defaultPublicCal; 
    120145 
    121   /* names from env properties */ 
    122  
    123   /** */ 
    124   public String publicCalendarRoot; 
    125   /** */ 
    126   public String userCalendarRoot; 
    127   /** */ 
    128   public String userDefaultCalendar; 
    129   /** */ 
    130   public String defaultTrashCalendar; 
    131  
    132   /** Account name for owner of public entities*/ 
    133   public String publicUserAccount; 
    134  
    135146  /** User entry for owner of public entities. 
    136147   */ 
     
    164175   */ 
    165176  public int fixedNoEndTime; 
    166  
    167   /** */ 
    168   public String systemId; // required for fixing guids 
    169177 
    170178  /** Used when converting from 2.3.2 */ 
     
    559567    classes.put("category", "org.bedework.calfacade.BwCategory"); 
    560568    classes.put("authuser", "org.bedework.calfacade.svc.BwAuthUser"); 
    561     classes.put("event", "org.bedework.calfacade.BwEvent"); 
     569    classes.put("event", "org.bedework.calfacade.BwEventObj"); 
    562570    classes.put("adminGroup", "org.bedework.calfacade.svc.BwAdminGroup"); 
    563571    classes.put("user-prefs", "org.bedework.calfacade.svc.BwPreferences"); 
     
    586594    /* See if it's in the user map first. */ 
    587595 
    588     if (publicUserAccount == null) { 
     596    if (syspars.getPublicUser() == null) { 
    589597      throw new Exception("publicUserAccount must be defined"); 
    590598    } 
    591599 
    592     publicUser = usersTbl.get(publicUserAccount); 
     600    publicUser = usersTbl.get(syspars.getPublicUser()); 
    593601 
    594602    if (publicUser == null) { 
    595603      // Create it 
    596       publicUser = new BwUser(publicUserAccount); 
     604      publicUser = new BwUser(syspars.getPublicUser()); 
    597605      publicUser.setInstanceOwner(true); 
    598606      publicUser.setCategoryAccess(getDefaultPublicAccess()); 
  • trunk/calendar3/tools/src/org/bedework/tools/dumprestore/restore/RestoreIntf.java

    r2 r18  
    6060import org.bedework.calfacade.BwOrganizer; 
    6161import org.bedework.calfacade.BwSponsor; 
     62import org.bedework.calfacade.BwSystem; 
     63import org.bedework.calfacade.BwTimeZone; 
    6264import org.bedework.calfacade.BwUser; 
    6365import org.bedework.calfacade.BwUserInfo; 
     
    110112  public void close() throws Throwable; 
    111113 
     114  /** Restore system pars 
     115   * 
     116   * @param o 
     117   * @throws Throwable 
     118   */ 
     119  public void restoreSyspars(BwSystem o) throws Throwable; 
     120 
    112121  /** Restore user 
    113122   * 
     
    123132   */ 
    124133  public void restoreUserInfo(BwUserInfo o) throws Throwable; 
     134 
     135  /** Restore timezone 
     136   * 
     137   * @param o 
     138   * @throws Throwable 
     139   */ 
     140  public void restoreTimezone(BwTimeZone o) throws Throwable; 
    125141 
    126142  /** Restore an admin group - though not the user entries nor 
  • trunk/calendar3/tools/src/org/bedework/tools/dumprestore/restore/TimezonesImpl.java

    r2 r18  
    5757import org.bedework.calfacade.BwUser; 
    5858//import org.bedework.calfacade.BwTimeZone; 
     59import org.bedework.calfacade.BwTimeZone; 
    5960import org.bedework.calfacade.CalFacadeBadDateException; 
    6061import org.bedework.calfacade.CalFacadeException; 
     
    8788  private transient Logger log; 
    8889 
    89   private boolean publicAdmin; 
    9090  private boolean debug; 
     91  private boolean publick = true; // current mode 
     92  private BwUser user; 
     93 
     94  private RestoreIntf ri; 
    9195 
    9296  private static class TimezoneInfo { 
     
    107111  //private transient Logger log; 
    108112 
    109   TimezonesImpl(boolean publicAdmin, boolean debug
     113  TimezonesImpl(boolean debug, BwUser user, RestoreIntf ri
    110114          throws CalFacadeException { 
    111     this.publicAdmin = publicAdmin; 
    112115    this.debug = debug; 
     116    this.user = user; 
     117    this.ri = ri; 
    113118 
    114119    // Force fetch of timezones 
    115120    //lookup("not-a-timezone"); 
     121  } 
     122 
     123  /** Set current publick mode 
     124   * 
     125   * @param val 
     126   */ 
     127  public void setPublick(boolean val) { 
     128    publick = val; 
     129  } 
     130 
     131  /** Set current user 
     132   * 
     133   * @param val 
     134   */ 
     135  public void setUser(BwUser val) { 
     136    user = val; 
    116137  } 
    117138 
     
    121142       force a refresh when we're done. 
    122143    */ 
    123     if (publicAdmin) { 
    124       return; 
     144 
     145    BwTimeZone tz = new BwTimeZone(); 
     146 
     147    tz.setTzid(tzid); 
     148    tz.setPublick(publick); 
     149    tz.setOwner(user); 
     150 
     151    StringBuffer sb = new StringBuffer(); 
     152 
     153    sb.append("BEGIN:VCALENDAR\n"); 
     154    sb.append("PRODID:-//RPI//BEDEWORK//US\n"); 
     155    sb.append("VERSION:2.0\n"); 
     156    sb.append(vtz.toString()); 
     157    sb.append("END:VCALENDAR\n"); 
     158 
     159    tz.setVtimezone(sb.toString()); 
     160 
     161    try { 
     162      ri.restoreTimezone(tz); 
     163    } catch (Throwable t) { 
     164      throw new CalFacadeException(t); 
    125165    } 
    126166 
  • trunk/calendar3/tools/src/org/bedework/tools/dumprestore/restore/rules/AdminGroupRule.java

    r2 r18  
    9090      } 
    9191 
    92       if (globals.toHibernate) { 
     92      if (globals.from2p3px) { 
    9393        globals.getSuperGroup().addGroupMember(entity); 
    9494      } 
  • trunk/calendar3/tools/src/org/bedework/tools/dumprestore/restore/rules/AuthUserRule.java

    r2 r18  
    7878        globals.rintf.restoreAuthUser(au); 
    7979 
    80         if (globals.toHibernate && (globals.userInfo != null)) { 
     80        if (globals.from2p3px && (globals.userInfo != null)) { 
    8181          globals.userInfo.setUser(au.getUser()); 
    8282          globals.rintf.restoreUserInfo(globals.userInfo); 
  • trunk/calendar3/tools/src/org/bedework/tools/dumprestore/restore/rules/EntityFieldRule.java

    r2 r18  
    148148 
    149149    /* XXX We need to handle timezones here as well */ 
    150     val.init(false, val.getDtval() + tmval, null, globals.timezones); 
     150    val.init(false, val.getDtval() + tmval, 
     151             globals.syspars.getTzid(), globals.timezones); 
    151152  } 
    152153 
  • trunk/calendar3/tools/src/org/bedework/tools/dumprestore/restore/rules/EventRule.java

    r2 r18  
    103103 
    104104    try { 
    105       if (globals.toHibernate) { 
     105      if (globals.from2p3px) { 
    106106        if ((entity.getGuid() == null) || (entity.getGuid().length() == 0)) { 
    107           if (globals.systemId == null) { 
     107          if (globals.syspars.getSystemid() == null) { 
    108108            throw new Exception("You must supply a system id"); 
    109109          } 
     
    116116          } 
    117117 
    118           String guid = guidPrefix + globals.systemId
     118          String guid = guidPrefix + globals.syspars.getSystemid()
    119119 
    120120          if (globals.debug) { 
  • trunk/calendar3/tools/src/org/bedework/tools/dumprestore/restore/rules/FilterRule.java

    r2 r18  
    8686 
    8787    try { 
    88       if (globals.toHibernate) { 
     88      if (globals.from2p3px) { 
    8989        /* We are converting filter definitions into calendar definitions. 
    9090         */ 
     
    124124            // This is the root 
    125125            globals.publicCalRoot = cal; 
    126             globals.publicCalRoot.setName(globals.publicCalendarRoot); 
    127             globals.publicCalRoot.setPath("/" + globals.publicCalendarRoot); 
     126            globals.publicCalRoot.setName(globals.syspars.getPublicCalendarRoot()); 
     127            globals.publicCalRoot.setPath("/" + globals.syspars.getPublicCalendarRoot()); 
    128128 
    129129            globals.publicCalRoot.setAccess(globals.getDefaultPublicCalendarsAccess()); 
  • trunk/calendar3/tools/src/org/bedework/tools/dumprestore/restore/rules/FiltersRule.java

    r2 r18  
    8080   */ 
    8181  public void end(String ns, String name) throws Exception { 
    82     if (!globals.toHibernate) { 
     82    if (!globals.from2p3px) { 
    8383      // Not converting 
    8484      return; 
     
    100100      userRootCal.setId(globals.nextCalKey); 
    101101      globals.nextCalKey++; 
    102       userRootCal.setName(globals.userCalendarRoot); 
    103       userRootCal.setPath("/" + globals.userCalendarRoot); 
     102      userRootCal.setName(globals.syspars.getUserCalendarRoot()); 
     103      userRootCal.setPath("/" + globals.syspars.getUserCalendarRoot()); 
    104104      userRootCal.setCreator(globals.getPublicUser()); 
    105105      userRootCal.setOwner(globals.getPublicUser()); 
     
    122122    /* Create a user collection */ 
    123123 
     124    /* Create a folder for the user */ 
    124125    BwCalendar ucal = new BwCalendar(); 
    125126    ucal.setId(globals.nextCalKey); 
     
    132133    userRootCal.addChild(ucal); 
    133134 
     135    /* Create a default calendar */ 
    134136    BwCalendar cal = new BwCalendar(); 
    135137    cal.setId(globals.nextCalKey); 
    136138    globals.nextCalKey++; 
    137     cal.setName(globals.userDefaultCalendar); 
     139    cal.setName(globals.syspars.getUserDefaultCalendar()); 
    138140    cal.setPath(ucal.getPath() + "/" + cal.getName()); 
    139141    cal.setCreator(u); 
     
    147149    globals.defaultCalendars.put(new Integer(u.getId()), cal); 
    148150 
     151    /* Add the trash calendar */ 
    149152    cal = new BwCalendar(); 
    150153    cal.setId(globals.nextCalKey); 
    151154    globals.nextCalKey++; 
    152     cal.setName(globals.defaultTrashCalendar); 
     155    cal.setName(globals.syspars.getDefaultTrashCalendar()); 
     156    cal.setPath(ucal.getPath() + "/" + cal.getName()); 
     157    cal.setCreator(u); 
     158    cal.setOwner(u); 
     159    cal.setCalendar(ucal); 
     160    cal.setCalendarCollection(true); 
     161    ucal.addChild(cal); 
     162 
     163    /* Add the inbox */ 
     164    cal = new BwCalendar(); 
     165    cal.setId(globals.nextCalKey); 
     166    globals.nextCalKey++; 
     167    cal.setName(globals.syspars.getUserInbox()); 
     168    cal.setPath(ucal.getPath() + "/" + cal.getName()); 
     169    cal.setCreator(u); 
     170    cal.setOwner(u); 
     171    cal.setCalendar(ucal); 
     172    cal.setCalendarCollection(true); 
     173    ucal.addChild(cal); 
     174 
     175    /* Add the outbox */ 
     176    cal = new BwCalendar(); 
     177    cal.setId(globals.nextCalKey); 
     178    globals.nextCalKey++; 
     179    cal.setName(globals.syspars.getUserOutbox()); 
    153180    cal.setPath(ucal.getPath() + "/" + cal.getName()); 
    154181    cal.setCreator(u); 
  • trunk/calendar3/tools/src/org/bedework/tools/dumprestore/restore/rules/UserRule.java

    r2 r18  
    7474    globals.users++; 
    7575 
    76     if (globals.toHibernate) { 
     76    if (globals.from2p3px) { 
    7777      entity.setCategoryAccess(globals.getDefaultPersonalAccess()); 
    7878      entity.setLocationAccess(globals.getDefaultPersonalAccess()); 
  • trunk/calendar3/webadmin/src/org/bedework/webadmin/timezones/PEUploadTimezonesAction.java

    r2 r18  
    5555package org.bedework.webadmin.timezones; 
    5656 
    57 import org.bedework.calfacade.BwCalendar; 
     57import org.bedework.appcommon.TimeZonesParser; 
    5858import org.bedework.calsvci.CalSvcI; 
    59 import org.bedework.icalendar.IcalTranslator; 
    60 import org.bedework.icalendar.IcalUtil; 
    6159import org.bedework.webadmin.PEAbstractAction; 
    6260import org.bedework.webadmin.PEActionForm; 
    6361import org.bedework.webcommon.BwSession; 
    6462 
    65 import edu.rpi.sss.util.xml.XmlUtil; 
    66  
    67  
    68 import java.io.InputStream; 
    69 import java.io.InputStreamReader; 
    70 import java.io.Reader; 
    7163import java.util.Collection; 
    7264import java.util.Iterator; 
    73 import java.util.Vector; 
    7465import javax.servlet.http.HttpServletRequest; 
    75 import javax.xml.parsers.DocumentBuilderFactory; 
    76 import javax.xml.parsers.DocumentBuilder; 
    77  
    78 import net.fortuna.ical4j.model.Calendar; 
    79 import net.fortuna.ical4j.model.component.VTimeZone; 
    80 import net.fortuna.ical4j.model.ComponentList; 
    81 import net.fortuna.ical4j.model.Property; 
    8266 
    8367import org.apache.struts.upload.FormFile; 
    84  
    85 import org.w3c.dom.Document; 
    86 import org.w3c.dom.Element; 
    87 import org.xml.sax.InputSource; 
    88 //import org.w3c.dom.NodeList; 
    89 import org.xml.sax.SAXException; 
    9068 
    9169/** This action imports the uploaded system timezone definitions. 
     
    11997    } 
    12098 
    121     InputStream is = upFile.getInputStream(); 
     99    TimeZonesParser tzp = new TimeZonesParser(upFile.getInputStream(), debug); 
    122100 
    123     /* The input file should look something like: 
    124        <dir> 
    125          <name>A-name</name> 
    126          <dir>...</dir> 
    127          <file> 
    128            <name>file1.ics</name> 
    129            <data>...</data> 
    130          </file> 
    131        </dir> 
    132  
    133        We ignore the first name - it represents the root. 
    134        Each <dir> element may contain other <dir> and <file> elements. 
    135        Each <name> element is a path element 
    136      */ 
    137  
    138     DirClass rootDir = parseTzDefs(new InputStreamReader(is)); 
    139     if (!rootDir.ok) { 
    140       form.getErr().emit("org.bedework.error.timezones.parseerror", 
    141                          rootDir.msg); 
    142       return "error"; 
    143     } 
     101    Collection tzis = tzp.getTimeZones(); 
    144102 
    145103    CalSvcI svci = form.getCalSvcI(); 
    146104 
    147     if (!doDir(svci, rootDir, "", form)) { 
    148       return "error"; 
     105    Iterator it = tzis.iterator(); 
     106    while (it.hasNext()) { 
     107      TimeZonesParser.TimeZoneInfo tzi = (TimeZonesParser.TimeZoneInfo)it.next(); 
     108 
     109      svci.saveTimeZone(tzi.tzid, tzi.timezone); 
    149110    } 
    150111 
     
    153114    return "success"; 
    154115  } 
    155  
    156   private boolean doDir(CalSvcI svci, DirClass dir, String indent, 
    157                         PEActionForm form) throws Throwable { 
    158     if (debug) { 
    159       debugMsg(indent + "Dir: " + dir.cal.getName()); 
    160     } 
    161  
    162     Iterator dit = dir.dirs.iterator(); 
    163     while (dit.hasNext()) { 
    164       doDir(svci, (DirClass)dit.next(), indent + "  ", form); 
    165     } 
    166  
    167     Iterator tzit = dir.tzs.iterator(); 
    168     while (tzit.hasNext()) { 
    169       Calendar ical = (Calendar)tzit.next(); 
    170  
    171       ComponentList cl = ical.getComponents(); 
    172  
    173       if (cl.size() != 1) { 
    174         form.getErr().emit("org.bedework.error.timezones.dataerror", 
    175                            cl.size() + " components in Calendar"); 
    176         return false; 
    177       } 
    178  
    179       Object o = cl.get(0); 
    180       if (!(o instanceof VTimeZone)) { 
    181         form.getErr().emit("org.bedework.error.timezones.dataerror", 
    182                            "component in Calendar not VTimeZone"); 
    183         return false; 
    184       } 
    185  
    186       VTimeZone tz = (VTimeZone)o; 
    187       String tzid = IcalUtil.getProperty(tz, Property.TZID).getValue(); 
    188  
    189       svci.saveTimeZone(tzid, tz); 
    190  
    191       if (debug) { 
    192         debugMsg(indent + "tzid: " + tzid); 
    193       } 
    194     } 
    195  
    196     return true; 
    197   } 
    198  
    199   private static class DirClass { 
    200     boolean ok = true;  // Set in root only 
    201     String msg; 
    202     BwCalendar cal; // The name will be set according to the dir/name 
    203  
    204     Collection dirs = new Vector(); 
    205  
    206     /* Collection of Calendar obects 
    207      */ 
    208     Collection tzs = new Vector(); 
    209   } 
    210  
    211   private DirClass parseTzDefs(Reader rdr) throws Throwable { 
    212     Document doc = null; 
    213     boolean ok; 
    214     String msg = null; 
    215  
    216     try { 
    217       DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
    218       factory.setNamespaceAware(false); 
    219  
    220       DocumentBuilder builder = factory.newDocumentBuilder(); 
    221  
    222       doc = builder.parse(new InputSource(rdr)); 
    223       ok = true; 
    224     } catch (SAXException e) { 
    225       msg = e.getMessage(); 
    226       ok = false; 
    227     } catch (Throwable t) { 
    228       msg = t.getMessage(); 
    229       ok = false; 
    230     } finally { 
    231       if (rdr != null) { 
    232         try { 
    233           rdr.close(); 
    234         } catch (Throwable t) {} 
    235       } 
    236     } 
    237  
    238     if (!ok) { 
    239       DirClass dir = new DirClass(); 
    240       dir.ok = false; 
    241       dir.msg = msg; 
    242       return dir; 
    243     } 
    244  
    245     return processDir(doc.getDocumentElement()); 
    246   } 
    247  
    248   private DirClass processDir(Element dir) throws Throwable { 
    249     DirClass d = new DirClass(); 
    250     Collection children = XmlUtil.getElements(dir); 
    251  
    252     Iterator it = children.iterator(); 
    253  
    254     /* First is name */ 
    255  
    256     Element nmel = (Element)it.next(); 
    257  
    258     d.cal = new BwCalendar(); 
    259     d.cal.setName(XmlUtil.getElementContent(nmel)); 
    260  
    261     while (it.hasNext()) { 
    262       Element el = (Element)it.next(); 
    263  
    264       if ("dir".equals(el.getTagName())) { 
    265         d.dirs.add(processDir(el)); 
    266       } else if ("file".equals(el.getTagName())) { 
    267         d.tzs.add(processFile(el)); 
    268       } else { 
    269         throw new Exception("Expected <dir> or <file>, found: " + el.getTagName()); 
    270       } 
    271     } 
    272  
    273     return d; 
    274   } 
    275  
    276   private Calendar processFile(Element ics) throws Throwable { 
    277     //NodeList ds = ics.getElementsByTagName("data"); 
    278  
    279     Collection children = XmlUtil.getElements(ics); 
    280  
    281     Iterator it = children.iterator(); 
    282  
    283     /* First is name */ 
    284  
    285     Element el = (Element)it.next(); 
    286     if (!"name".equals(el.getTagName())) { 
    287       throw new Exception("Expected <name>, found: " + el.getTagName()); 
    288     } 
    289  
    290     /* Next is data */ 
    291     el = (Element)it.next(); 
    292     if (!"data".equals(el.getTagName())) { 
    293       throw new Exception("Expected <data>, found: " + el.getTagName()); 
    294     } 
    295  
    296     return IcalTranslator.getCalendar(XmlUtil.getElementContent(el)); 
    297   } 
    298116} 
    299117