Changeset 463
- Timestamp:
- 05/09/06 16:56:37
- Files:
-
- trunk/calendar3/bldfiles/buildsh.xml (modified) (7 diffs)
- trunk/calendar3/bldfiles/globalDefs.xml (modified) (2 diffs)
- trunk/calendar3/calCore/resources/hbms/Alarm.hbm.xml (modified) (1 diff)
- trunk/calendar3/calCore/resources/hbms/Attendee.hbm.xml (modified) (1 diff)
- trunk/calendar3/calCore/resources/hbms/Calendar.hbm.xml (modified) (1 diff)
- trunk/calendar3/calEnv/src/org/bedework/calenv/CalOptions.java (modified) (6 diffs)
- trunk/calendar3/calFacade/src/org/bedework/calfacade/BwAlarm.java (modified) (8 diffs)
- trunk/calendar3/calFacade/src/org/bedework/calfacade/BwAttendee.java (modified) (6 diffs)
- trunk/calendar3/calFacade/src/org/bedework/calfacade/BwDateTime.java (modified) (1 diff)
- trunk/calendar3/calFacade/src/org/bedework/calfacade/BwEvent.java (modified) (9 diffs)
- trunk/calendar3/calFacade/src/org/bedework/calfacade/ifs/Attendees.java (modified) (6 diffs)
- trunk/calendar3/config/configs/democal.options.xml (modified) (2 diffs)
- trunk/calendar3/config/configs/democal.properties (modified) (4 diffs)
- trunk/calendar3/deployment/build.xml (modified) (6 diffs)
- trunk/calendar3/deployment/dumprestore/shellscr/build.xml (modified) (2 diffs)
- trunk/calendar3/deployment/dumprestore/shellscr/resources/dumpres.sh (modified) (1 diff)
- trunk/calendar3/deployment/dumprestore/shellscr/resources/log4j.xml (modified) (2 diffs)
- trunk/calendar3/deployment/termination/shellscr (added)
- trunk/calendar3/deployment/termination/shellscr/build.xml (added)
- trunk/calendar3/dumprestore/build.xml (modified) (5 diffs)
- trunk/calendar3/dumprestore/src/org/bedework/dumprestore/DumpRestoreConfig.java (added)
- trunk/calendar3/dumprestore/src/org/bedework/dumprestore/dump/Dump.java (modified) (8 diffs)
- trunk/calendar3/dumprestore/src/org/bedework/dumprestore/dump/DumpGlobals.java (modified) (4 diffs)
- trunk/calendar3/dumprestore/src/org/bedework/dumprestore/dump/dumpling/DumpAttendees.java (modified) (1 diff)
- trunk/calendar3/dumprestore/src/org/bedework/dumprestore/dump/dumpling/DumpAuthUsers.java (modified) (2 diffs)
- trunk/calendar3/dumprestore/src/org/bedework/dumprestore/dump/dumpling/DumpEvents.java (modified) (7 diffs)
- trunk/calendar3/dumprestore/src/org/bedework/dumprestore/dump/dumpling/DumpUserPrefs.java (modified) (5 diffs)
- trunk/calendar3/dumprestore/src/org/bedework/dumprestore/dump/dumpling/Dumpling.java (modified) (4 diffs)
- trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/HibRestore.java (modified) (37 diffs)
- trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/Restore.java (modified) (13 diffs)
- trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/RestoreGlobals.java (modified) (22 diffs)
- trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/RestoreIntf.java (modified) (5 diffs)
- trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/TimezonesImpl.java (modified) (2 diffs)
- trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/rules/AdminGroupRule.java (modified) (1 diff)
- trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/rules/AttendeeFieldRule.java (added)
- trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/rules/AttendeeRule.java (added)
- trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/rules/AuthUserRule.java (modified) (1 diff)
- trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/rules/CalendarRule.java (modified) (1 diff)
- trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/rules/EntityFieldRule.java (modified) (4 diffs)
- trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/rules/EntityRule.java (modified) (5 diffs)
- trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/rules/EventFieldRule.java (modified) (1 diff)
- trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/rules/EventRule.java (modified) (4 diffs)
- trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/rules/FilterRule.java (modified) (6 diffs)
- trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/rules/FiltersRule.java (modified) (2 diffs)
- trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/rules/RestoreRule.java (modified) (1 diff)
- trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/rules/RestoreRuleSet.java (modified) (2 diffs)
- trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/rules/SysparsFieldRule.java (modified) (3 diffs)
- trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/rules/UserPrefsFieldRule.java (modified) (7 diffs)
- trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/rules/UserRule.java (modified) (1 diff)
- trunk/calendar3/test/caldavTestData/eg/eg21.test (added)
- trunk/calendar3/test/src/org/bedework/tests/calsvc/CalSvcAlarmsTest.java (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/calendar3/bldfiles/buildsh.xml
r394 r463 3 3 <!-- =================================================================== 4 4 This file builds a runnable application wrapped up as a zip file. 5 Unpacking the zip shou dlresult in a directory containing a shell5 Unpacking the zip should result in a directory containing a shell 6 6 script, a set of jars and any other resources needed. 7 7 … … 28 28 <property name="app.dest.resources" 29 29 location="${app.dest.home}/resources" /> 30 <property name="app.dest.data" 31 location="${app.dest.home}/data" /> 30 32 31 33 <property name="app.zip.file" … … 39 41 <target name="build" depends="init"> 40 42 <filterset id="property.filters" > 43 <filter token="BW-APP-NAME" 44 value="${org.bedework.deploy.name}"/> 45 41 46 <filter token="HIBERNATE-DIALECT" 42 47 value="${org.bedework.global.hibernate.dialect}" /> … … 49 54 50 55 <filter token="DUMP-CLASS" 51 value="org.bedework. tools.dumprestore.dump.Dump"/>56 value="org.bedework.dumprestore.dump.Dump"/> 52 57 <filter token="RESTORE-CLASS" 53 value="org.bedework. tools.dumprestore.restore.Restore"/>58 value="org.bedework.dumprestore.restore.Restore"/> 54 59 55 60 <filter token="APP-NAME" … … 88 93 <copy todir="${app.dest.lib}" flatten="yes" > 89 94 <fileset refid="org.bedework.run.jars" /> 90 </copy>91 <copy todir="${app.dest.lib}" flatten="yes" >92 95 <fileset refid="org.bedework.run.lib.jars" /> 96 97 <!-- local jdbc drivers --> 98 <fileset dir="${org.bedework.jdbc.lib}"> 99 <include name="*.jar"/> 100 </fileset> 93 101 </copy> 94 102 95 <copy todir="${app.dest.classes}" > 103 <!-- Include the quickstart jdbc driver --> 104 <copy todir="${app.dest.lib}" file="${hsqldb.jdbcdriver.jar}"/> 105 106 <copy todir="${app.dest.classes}"> 107 <fileset dir="${org.bedework.core.base}/resources/properties" /> 108 <filterset refid="property.filters" /> 109 </copy> 110 111 <copy todir="${app.dest.classes}"> 112 <fileset dir="${org.bedework.core.base}/resources/hbms" /> 113 <filterset refid="property.filters" /> 114 </copy> 115 116 <copy todir="${app.dest.classes}" overwrite="yes" > 96 117 <fileset refid="org.bedework.extra.resources" /> 118 <filterset refid="property.filters" /> 97 119 </copy> 98 120 … … 118 140 119 141 <!-- =============================================================== 142 Add any data files 143 =============================================================== --> 144 145 <mkdir dir="${app.dest.data}" /> 146 147 <copy todir="${app.dest.data}" overwrite="yes" > 148 <fileset refid="org.bedework.shellscr.data" /> 149 <filterset refid="property.filters" /> 150 </copy> 151 152 <!-- =============================================================== 120 153 Build the classpath 121 154 =============================================================== --> … … 137 170 =============================================================== --> 138 171 139 <copy to Dir="${app.dest.home}"172 <copy tofile="${app.dest.home}/${propval.app.shellscr.name}" 140 173 file="${app.run.shellscr}" > 141 174 <filterset> trunk/calendar3/bldfiles/globalDefs.xml
r310 r463 29 29 <property name="org.bedework.build.caldav" value="yes" /> 30 30 31 <!-- First try to load properties from user dump/restore overrides -->32 <property name="org.bedework.dumprestore.properties.file"33 location="${user.home}/bedework.dumprestore.properties"/>34 35 31 <!-- Overriding this when invoking ant allows different user property 36 32 files to be included e.g. … … 43 39 44 40 <!-- Load user property definition overrides --> 45 <property file="${org.bedework.dumprestore.properties.file}"/>46 41 <property file="${org.bedework.user.build.properties}" /> 47 42 <property file="${calendar.dir}/build.properties"/> trunk/calendar3/calCore/resources/hbms/Alarm.hbm.xml
r445 r463 74 74 <column name="ownerid" not-null="true" index="valarms_user" /> 75 75 </many-to-one> 76 77 <property name="publick" type="true_false" > 78 <column name="publick" not-null="true" /> 79 </property> 76 80 77 81 <property name="trigger" column="trigger_rfctime" type="text"/> trunk/calendar3/calCore/resources/hbms/Attendee.hbm.xml
r445 r463 17 17 <version name="seq" column="bwsequence" type="integer" /> 18 18 19 <many-to-one name="owner" 20 class="org.bedework.calfacade.BwUser" 21 unique="true" > 22 <column name="ownerid" not-null="true" index="vattendees_user" /> 23 </many-to-one> 24 19 25 <property name="cn" type="text"/> 20 26 <property name="cuType" column="cutype" type="text"/> trunk/calendar3/calCore/resources/hbms/Calendar.hbm.xml
r445 r463 41 41 <!-- I wanted to specify unique="true" on this but mysql complains. 42 42 --> 43 <property name="path" column=" path" type="string" length="1000"43 <property name="path" column="bwpath" type="string" length="1000" 44 44 not-null="true" 45 45 index="calpath" lazy="false" /> trunk/calendar3/calEnv/src/org/bedework/calenv/CalOptions.java
r415 r463 99 99 initOptions(); 100 100 } catch (Throwable t) { 101 Logger.getLogger(CalOptions.class).error("Init error", t);101 error("Init error", t); 102 102 throw new RuntimeException(t); 103 103 } … … 578 578 Class[] parClasses = meth.getParameterTypes(); 579 579 if (parClasses.length != 1) { 580 error("Invalid setter method " + name); 580 581 throw new CalEnvException("org.bedework.calenv.invalid.setter"); 581 582 } … … 588 589 parClass.getName().equals("java.lang.Integer")) { 589 590 par = Integer.valueOf(ndval); 591 } else if (parClass.getName().equals("long") || 592 parClass.getName().equals("java.lang.Long")) { 593 par = Long.valueOf(ndval); 590 594 } else if (parClass.getName().equals("boolean") || 591 595 parClass.getName().equals("java.lang.Boolean")) { 592 596 par = Boolean.valueOf(ndval); 593 597 } else { 598 error("Unsupported par class for method " + name); 594 599 throw new CalEnvException("org.bedework.calenv.unsupported.setter"); 595 600 } … … 618 623 */ 619 624 if (val != null) { 625 error("Nested classes not yet supported for element " + valnode.name + 626 " and class " + className); 620 627 throw new CalEnvException("org.bedework.calenv.nested.classes.unsupported"); 621 628 } … … 629 636 630 637 doChildren(valnode, el, val); 638 639 val = null; 631 640 } 632 641 } catch (CalEnvException ce) { … … 635 644 throw new CalEnvException(t); 636 645 } 646 } 647 648 private static void error(String msg) { 649 Logger.getLogger(CalOptions.class).error(msg); 650 } 651 652 private static void error(String msg, Throwable t) { 653 Logger.getLogger(CalOptions.class).error(msg, t); 637 654 } 638 655 trunk/calendar3/calFacade/src/org/bedework/calfacade/BwAlarm.java
r128 r463 180 180 * ==================================================================== */ 181 181 182 /** Set the owner 183 * 184 * @param val UserVO owner of the entity 185 */ 186 public void setOwner(BwUser val) { 187 super.setOwner(val); 188 if (attendeesHelper != null) { 189 attendeesHelper.setOwner(val); 190 } 191 } 192 193 /** 194 * @param val 195 */ 196 public void setPublick(boolean val) { 197 super.setPublick(val); 198 if (attendeesHelper != null) { 199 attendeesHelper.setPublick(val); 200 } 201 } 202 182 203 /** Set the alarmType for this event 183 204 * … … 560 581 public void clearAttendees() { 561 582 getAttendeesHelper().clearAttendees(); 562 setAttendees( attendeesHelper.getAttendees());583 setAttendees(getAttendeesHelper().getAttendees()); 563 584 } 564 585 … … 568 589 public void addAttendee(BwAttendee val) { 569 590 getAttendeesHelper().addAttendee(val); 570 setAttendees( attendeesHelper.getAttendees());591 setAttendees(getAttendeesHelper().getAttendees()); 571 592 } 572 593 … … 576 597 public void addAttendeeEmail(String val) { 577 598 getAttendeesHelper().addAttendeeEmail(val); 578 setAttendees( attendeesHelper.getAttendees());599 setAttendees(getAttendeesHelper().getAttendees()); 579 600 } 580 601 … … 587 608 } 588 609 589 return attendeesHelper.getAttendeeEmailList();610 return getAttendeesHelper().getAttendeeEmailList(); 590 611 } 591 612 … … 598 619 } 599 620 600 return attendeesHelper.copyAttendees();621 return getAttendeesHelper().copyAttendees(); 601 622 } 602 623 … … 609 630 } 610 631 611 return attendeesHelper.cloneAttendees();632 return getAttendeesHelper().cloneAttendees(); 612 633 } 613 634 … … 818 839 private Attendees getAttendeesHelper() { 819 840 if (attendeesHelper == null) { 820 attendeesHelper = new Attendees( );841 attendeesHelper = new Attendees(getOwner(), getPublick()); 821 842 } 822 843 trunk/calendar3/calFacade/src/org/bedework/calfacade/BwAttendee.java
r2 r463 54 54 package org.bedework.calfacade; 55 55 56 import org.bedework.calfacade.base.Bw Dbentity;56 import org.bedework.calfacade.base.BwOwnedDbentity; 57 57 58 58 /** Represent an attendee … … 60 60 * @author Mike Douglass douglm@rpi.edu 61 61 */ 62 public class BwAttendee extends Bw Dbentity implements Comparable {62 public class BwAttendee extends BwOwnedDbentity implements Comparable { 63 63 /* Params fields */ 64 64 … … 86 86 /** Constructor 87 87 * 88 * @param owner 89 * @param publick 88 90 * @param cn 89 91 * @param cuType … … 99 101 * @param attendeeUri 100 102 */ 101 public BwAttendee(String cn, 103 public BwAttendee(BwUser owner, 104 boolean publick, 105 String cn, 102 106 String cuType, 103 107 String delegatedFrom, … … 111 115 String sentBy, 112 116 String attendeeUri) { 117 super(owner, publick); 113 118 this.cn = cn; 114 119 this.cuType = cuType; … … 402 407 403 408 public Object clone() { 404 BwAttendee nobj = new BwAttendee(getCn(), 409 BwAttendee nobj = new BwAttendee((BwUser)getOwner().clone(), 410 getPublick(), 411 getCn(), 405 412 getCuType(), 406 413 getDelegatedFrom(), trunk/calendar3/calFacade/src/org/bedework/calfacade/BwDateTime.java
r415 r463 423 423 * @throws CalFacadeException 424 424 */ 425 public void init(boolean dateType, String date, String tzid, CalTimezones timezones) throws CalFacadeException { 425 public void init(boolean dateType, String date, String tzid, 426 CalTimezones timezones) throws CalFacadeException { 426 427 setDateType(dateType); 427 428 setDtval(date); trunk/calendar3/calFacade/src/org/bedework/calfacade/BwEvent.java
r406 r463 247 247 private Collection attendees; 248 248 249 private Attendees attendeesHelper = new Attendees();249 private Attendees attendeesHelper; 250 250 251 251 private boolean recurring; … … 338 338 * ==================================================================== */ 339 339 340 /** Set the owner 341 * 342 * @param val UserVO owner of the entity 343 */ 344 public void setOwner(BwUser val) { 345 super.setOwner(val); 346 if (attendeesHelper != null) { 347 attendeesHelper.setOwner(val); 348 } 349 } 350 351 /** 352 * @param val 353 */ 354 public void setPublick(boolean val) { 355 super.setPublick(val); 356 if (attendeesHelper != null) { 357 attendeesHelper.setPublick(val); 358 } 359 } 360 340 361 /** Set the event's name 341 362 * … … 830 851 public void clearAttendees() { 831 852 getAttendeesHelper().clearAttendees(); 832 setAttendees( attendeesHelper.getAttendees());853 setAttendees(getAttendeesHelper().getAttendees()); 833 854 setAttendeesChanged(true); 834 855 } … … 839 860 public void addAttendee(BwAttendee val) { 840 861 getAttendeesHelper().addAttendee(val); 841 setAttendees( attendeesHelper.getAttendees());862 setAttendees(getAttendeesHelper().getAttendees()); 842 863 setAttendeesChanged(true); 843 864 } … … 848 869 public void addAttendeeEmail(String val) { 849 870 getAttendeesHelper().addAttendeeEmail(val); 850 setAttendees( attendeesHelper.getAttendees());871 setAttendees(getAttendeesHelper().getAttendees()); 851 872 setAttendeesChanged(true); 852 873 } … … 860 881 } 861 882 862 return attendeesHelper.getAttendeeEmailList();883 return getAttendeesHelper().getAttendeeEmailList(); 863 884 } 864 885 … … 871 892 } 872 893 873 return attendeesHelper.copyAttendees();894 return getAttendeesHelper().copyAttendees(); 874 895 } 875 896 … … 882 903 } 883 904 884 return attendeesHelper.cloneAttendees();905 return getAttendeesHelper().cloneAttendees(); 885 906 } 886 907 … … 1215 1236 private Attendees getAttendeesHelper() { 1216 1237 if (attendeesHelper == null) { 1217 attendeesHelper = new Attendees( );1238 attendeesHelper = new Attendees(getOwner(), getPublick()); 1218 1239 } 1219 1240 trunk/calendar3/calFacade/src/org/bedework/calfacade/ifs/Attendees.java
r128 r463 55 55 56 56 import org.bedework.calfacade.BwAttendee; 57 import org.bedework.calfacade.BwUser; 57 58 58 59 import java.io.Serializable; 60 import java.util.ArrayList; 59 61 import java.util.Collection; 60 62 import java.util.Iterator; 61 63 import java.util.TreeSet; 62 import java.util.Vector; 63 64 /** An interface defining the operations we can carry out on attendees and 64 65 /** A class defining the operations we can carry out on attendees and 65 66 * collections of attendees 66 67 * … … 69 70 */ 70 71 public class Attendees implements Serializable { 72 private BwUser owner; 73 private boolean publick; 71 74 private Collection attendees; 72 75 73 76 /** Constructor 74 */ 75 public Attendees() { 77 * 78 * @param owner 79 * @param publick 80 */ 81 public Attendees(BwUser owner, boolean publick) { 82 this.owner = owner; 83 this.publick = publick; 76 84 } 77 85 78 86 /** Constructor 79 87 * 88 * @param owner 89 * @param publick 80 90 * @param attendees 81 91 */ 82 public Attendees(Collection attendees) { 92 public Attendees(BwUser owner, boolean publick, Collection attendees) { 93 this(owner, publick); 83 94 this.attendees = attendees; 95 } 96 97 /** Set the owner for this object and any contained objects. 98 * 99 * @param val 100 */ 101 public void setOwner(BwUser val) { 102 owner = val; 103 104 if (attendees != null) { 105 Iterator it = iterateAttendees(); 106 while (it.hasNext()) { 107 BwAttendee att = (BwAttendee)it.next(); 108 att.setOwner(owner); 109 } 110 } 111 } 112 113 /** Set the public flag for this object and any contained objects. 114 * 115 * @param val 116 */ 117 public void setPublick(boolean val) { 118 publick = val; 119 120 if (attendees != null) { 121 Iterator it = iterateAttendees(); 122 while (it.hasNext()) { 123 BwAttendee att = (BwAttendee)it.next(); 124 att.setPublick(publick); 125 } 126 } 84 127 } 85 128 … … 126 169 127 170 if (!as.contains(val)) { 171 val.setOwner(owner); 172 val.setPublick(publick); 128 173 as.add(val); 129 174 } … … 138 183 BwAttendee att = new BwAttendee(); 139 184 185 att.setOwner(owner); 186 att.setPublick(publick); 140 187 att.setAttendeeUri(val); 141 188 … … 150 197 */ 151 198 public String[] getAttendeeEmailList() { 152 Vector v = new Vector();199 ArrayList al = new ArrayList(); 153 200 Iterator it = iterateAttendees(); 154 201 while (it.hasNext()) { … … 161 208 } else if (!uri.toUpperCase().startsWith("MAILTO:")) { 162 209 // Assume an email without MAILTO: prefix. 163 v.add(uri);210 al.add(uri); 164 211 } else { 165 v.add(uri.substring(7));212 al.add(uri.substring(7)); 166 213 } 167 214 } 168 return (String[]) v.toArray(new String[v.size()]);215 return (String[])al.toArray(new String[al.size()]); 169 216 } 170 217 trunk/calendar3/config/configs/democal.options.xml
r394 r463 3 3 <bedework> 4 4 <global> 5 5 6 <module> 6 7 <user-ldap-group classname="org.bedework.calcore.ldap.LdapConfigProperties"> … … 16 17 </user-ldap-group> 17 18 </module> 19 18 20 </global> 21 22 <!-- Only used for system initialisation or conversion from 2.3 - ignored thereafter --> 23 <syspars classname="org.bedework.calfacade.BwSystem"> 24 <!-- name must match the global system name --> 25 <name>bedework</name> 26 <tzid>America/New_York</tzid> 27 <systemid>demobedework@mysite.edu</systemid> 28 29 <publicCalendarRoot>public</publicCalendarRoot> 30 <userCalendarRoot>user</userCalendarRoot> 31 <userDefaultCalendar>calendar</userDefaultCalendar> 32 <defaultTrashCalendar>Trash</defaultTrashCalendar> 33 <userInbox>Inbox</userInbox> 34 <userOutbox>Outbox</userOutbox> 35 <deletedCalendar>Deleted</deletedCalendar> 36 <busyCalendar>Busy</busyCalendar> 37 38 <defaultUserViewName>All</defaultUserViewName> 39 40 <publicUser>user</publicUser> 41 42 <httpConnectionsPerUser>10</httpConnectionsPerUser> 43 <httpConnectionsPerHost>50</httpConnectionsPerHost> 44 <httpConnections>200</httpConnections> 45 46 47 <!-- size limits --> 48 <maxPublicDescriptionLength>500</maxPublicDescriptionLength> 49 <maxUserDescriptionLength>1000</maxUserDescriptionLength> 50 <maxUserEntitySize>100000</maxUserEntitySize> 51 <defaultUserQuota>10000000</defaultUserQuota> <!-- 10 Meg OK? --> 52 53 <!-- Max number of instances per recurring event --> 54 <maxInstances>1000</maxInstances> 55 56 <userauthClass>org.bedework.calcore.hibernate.UserAuthUWDbImpl</userauthClass> 57 <mailerClass>org.bedework.mail.DummyMailer</mailerClass> 58 <admingroupsClass>org.bedework.calcore.hibernate.AdminGroupsDbImpl</admingroupsClass> 59 <!-- 60 <usergroupsClass>org.bedework.calcore.ldap.UserGroupsLdapImpl</usergroupsClass> 61 --> 62 <usergroupsClass>org.bedework.calcore.hibernate.GroupsDbImpl</usergroupsClass> 63 </syspars> 64 65 <app> 66 <dumpres classname="org.bedework.dumprestore.DumpRestoreConfig"> 67 <debug>true</debug> 68 <debugEntity>false</debugEntity> 69 <superGroupName>campusAdminGroups</superGroupName> 70 <defaultPublicCalPath>/public/Other Events/Other</defaultPublicCalPath> 71 </dumpres> 72 73 <!-- Use the restore utility to convert from uwcal 2.3 --> 74 <restoreFrom2p3px classname="org.bedework.dumprestore.DumpRestoreConfig"> 75 <debug>true</debug> 76 <debugEntity>false</debugEntity> 77 <from2p3px>true</from2p3px> 78 <timezonesFilename>resources/bwtimezones.xml</timezonesFilename> 79 <superGroupName>campusAdminGroups</superGroupName> 80 <defaultPublicCalPath>/public/Other Events/Other</defaultPublicCalPath> 81 </restoreFrom2p3px> 82 </app> 19 83 </bedework> 20 84 </org> trunk/calendar3/config/configs/democal.properties
r415 r463 9 9 # deployed as well as some other global properties. 10 10 # 11 # Note that the options and properties are undergoing yet another upheaval. 12 # They will be divided into two parts, build-time ant properties in this file 13 # and run-time application properties in a corresponding xxx.options.xml file. 14 # 11 15 # -------------------------------------------------------------------- 12 16 # … … 15 19 16 20 # Define the names of the applications we want to build 17 org.bedework.install.app.names=bwconfig,CalAdmin,Events,UserCal,Pubcaldav,Usercaldav 18 org.bedework.install.app.types=webconfig,webadmin,webpublic,webuser,publiccaldav,usercaldav 21 org.bedework.install.app.names=bwconfig,CalAdmin,Events,UserCal,Pubcaldav,Usercaldav,dumpres,restoreFrom2p3px 22 org.bedework.install.app.types=webconfig,webadmin,webpublic,webuser,publiccaldav,usercaldav,dumprestore,dumprestore 19 23 20 24 # … … 34 38 org.bedework.global.personal.calendar.uri=/ucal 35 39 36 #37 # --------------------------------------------------------------------38 #39 # System parameters used globally by the system and read from the db.40 #41 org.bedework.syspar.tzid=America/New_York42 org.bedework.syspar.systemid=demobedework@mysite.edu43 44 org.bedework.syspar.public.calroot=public45 org.bedework.syspar.user.calroot=user46 org.bedework.syspar.default.user.calendar=calendar47 org.bedework.syspar.default.trash.calendar=Trash48 org.bedework.syspar.default.user.inbox=Inbox49 org.bedework.syspar.default.user.outbox=Outbox50 org.bedework.syspar.default.user.view=All51 52 org.bedework.syspar.public.user=public-user53 54 org.bedework.syspar.http.connections.peruser=1055 org.bedework.syspar.http.connections.perhost=5056 org.bedework.syspar.http.connections=20057 58 org.bedework.syspar.userauthclass=org.bedework.calcore.hibernate.UserAuthUWDbImpl59 org.bedework.syspar.mailerclass=org.bedework.mail.DummyMailer60 org.bedework.syspar.admingroupsclass=org.bedework.calcore.hibernate.AdminGroupsDbImpl61 org.bedework.syspar.usergroupsclass=org.bedework.calcore.ldap.UserGroupsLdapImpl62 #org.bedework.syspar.usergroupsclass=org.bedework.calcore.hibernate.GroupsDbImpl63 40 # 64 41 # ------------------------------------------------------------------- … … 233 210 # 234 211 235 org.bedework.app.dumprestore.zip.name=bwdumpres 236 org.bedework.app.dumprestore.description=Bedework dump/restore utility 237 org.bedework.app.dumprestore.version=3.0 238 org.bedework.app.dumprestore.jdbcdriver.jar=${appserver.jdbcdriver.jar} 239 240 # -------------- dump parameters ------------------ 241 242 org.bedework.dump.arg.dumpfile=${user.home}/.bedework/caldata.xml 243 org.bedework.dump.arg.debug=-debug 244 org.bedework.dump.arg.hibernate.dialect=org.hibernate.dialect.HSQLDialect 245 org.bedework.dump.arg.jdbcdriver=org.hsqldb.jdbcDriver 246 org.bedework.dump.arg.jdbcurl=jdbc:hsqldb:hsql://localhost:8887 247 org.bedework.dump.arg.jdbcid=sa 248 org.bedework.dump.arg.jdbcpw= 249 250 # -------------- restore parameters ------------------ 251 252 org.bedework.restore.arg.dumpfile=${calendar.dir}/dumprestore/initcaldata.xml 253 org.bedework.restore.arg.debug=-debug 254 org.bedework.restore.arg.from2p3px= 255 org.bedework.restore.arg.fixcals=-nfixcals 256 org.bedework.restore.arg.defaultpubliccal= 257 org.bedework.restore.arg.hibernate.dialect=org.hibernate.dialect.HSQLDialect 258 org.bedework.restore.arg.jdbcdriver=org.hsqldb.jdbcDriver 259 org.bedework.restore.arg.jdbcurl=jdbc:hsqldb:hsql://localhost:8887 260 org.bedework.restore.arg.jdbcid=sa 261 org.bedework.restore.arg.jdbcpw= 262 org.bedework.restore.arg.timezones= 263 212 # -------------- normal dump/restore build properties ------------------ 213 214 org.bedework.app.dumpres.shellscr.name=cmd 215 org.bedework.app.dumpres.zip.name=dumpres 216 org.bedework.app.dumpres.description=Bedework dump/restore utility 217 org.bedework.app.dumpres.version=3.1 218 org.bedework.app.dumpres.dumpfile=${calendar.dir}/dumprestore/initcaldata.xml 219 org.bedework.app.dumpres.hibernate.dialect=org.hibernate.dialect.HSQLDialect 220 org.bedework.app.dumpres.jdbcdriver=org.hsqldb.jdbcDriver 221 org.bedework.app.dumpres.jdbcurl=jdbc:hsqldb:hsql://localhost:8887 222 org.bedework.app.dumpres.jdbcid=sa 223 org.bedework.app.dumpres.jdbcpw= 224 225 # -------------- convert from 2.3 build properties - use restore only ------------------ 226 227 org.bedework.app.restoreFrom2p3px.shellscr.name=cmd 228 org.bedework.app.restoreFrom2p3px.zip.name=restoreFrom2p3px 229 org.bedework.app.restoreFrom2p3px.dumpfile=${calendar.dir}/dumprestore/initcaldata.xml 230 org.bedework.app.restoreFrom2p3px.hibernate.dialect=org.hibernate.dialect.HSQLDialect 231 org.bedework.app.restoreFrom2p3px.jdbcdriver=org.hsqldb.jdbcDriver 232 org.bedework.app.restoreFrom2p3px.jdbcurl=jdbc:hsqldb:hsql://localhost:8887 233 org.bedework.app.restoreFrom2p3px.jdbcid=sa 234 org.bedework.app.restoreFrom2p3px.jdbcpw= 235 trunk/calendar3/deployment/build.xml
r295 r463 145 145 <antcall target="deploy.standalone.apps" inheritrefs="true" /> 146 146 147 <antcall target="deploy.shellscr.apps" inheritrefs="true" /> 148 147 149 <antcall target="deploy.portal.apps" inheritrefs="true" /> 148 150 … … 166 168 <target name="deploy.standalone.apps" if="org.bedework.global.build.standalone.app" > 167 169 <property name="org.bedework.deploy.kind" value="webapp" /> 170 <antcall target="deploy.apps" inheritrefs="true" /> 171 </target> 172 173 <target name="deploy.shellscr.apps" if="org.bedework.global.build.standalone.app" > 174 <property name="org.bedework.deploy.kind" value="shellscr" /> 168 175 <antcall target="deploy.apps" inheritrefs="true" /> 169 176 </target> … … 210 217 prefix="org.bedework.deploy"> 211 218 <sequential> 212 <propertyset id="app-properties"> 213 <propertyref prefix="org.bedework.app.${org.bedework.deploy.name}"/> 214 <globmapper from="org.bedework.app.${org.bedework.deploy.name}.*" to="propval.app.*"/> 215 </propertyset> 216 217 <ant antfile="${org.bedework.deployment.base}/${org.bedework.deploy.type}/${org.bedework.deploy.kind}/build.xml" 218 inheritrefs="true" target="build.configured" > 219 <propertyset refid="app-properties" /> 220 </ant> 219 <available file="${org.bedework.deployment.base}/${org.bedework.deploy.type}/${org.bedework.deploy.kind}/build.xml" 220 property="app.kind.available" /> 221 <antcall target="build.available.configured.app" inheritrefs="true" /> 221 222 </sequential> 222 223 </forEachApp> … … 225 226 <ant antfile="${org.bedework.deployment.base}/termination/${org.bedework.deploy.kind}/build.xml" 226 227 inheritrefs="true" target="build.configured" /> 228 </target> 229 230 <target name="build.available.configured.app" if="app.kind.available"> 231 <!-- Pick out the application build properties based on the prefix "org.bedework.app." 232 and the deployment name --> 233 <propertyset id="app-properties"> 234 <propertyref prefix="org.bedework.app.${org.bedework.deploy.name}"/> 235 <globmapper from="org.bedework.app.${org.bedework.deploy.name}.*" to="propval.app.*"/> 236 </propertyset> 237 238 <ant antfile="${org.bedework.deployment.base}/${org.bedework.deploy.type}/${org.bedework.deploy.kind}/build.xml" 239 inheritrefs="true" target="build.configured" > 240 <propertyset refid="app-properties" /> 241 </ant> 227 242 </target> 228 243 … … 232 247 prefix="org.bedework.deploy"> 233 248 <sequential> 234 <propertyset id="app-properties"> 235 <propertyref prefix="org.bedework.app.${org.bedework.deploy.name}"/> 236 <globmapper from="org.bedework.app.${org.bedework.deploy.name}.*" to="propval.app.*"/> 237 </propertyset> 238 239 <ant antfile="${org.bedework.deployment.base}/${org.bedework.deploy.type}/${org.bedework.deploy.kind}/build.xml" 240 inheritrefs="true" target="deploy" > 241 <propertyset refid="app-properties" /> 242 </ant> 249 <antcall target="wrap.deploy.available.app" inheritrefs="true" /> 243 250 </sequential> 244 251 </forEachApp> … … 248 255 inheritrefs="true" target="deploy" /> 249 256 </target> 257 258 <target name="wrap.deploy.available.app"> 259 <!-- just to make app.kind.available go away --> 260 <available file="${org.bedework.deployment.base}/${org.bedework.deploy.type}/${org.bedework.deploy.kind}/build.xml" 261 property="app.kind.available" /> 262 <antcall target="deploy.available.app" inheritrefs="true" /> 263 </target> 264 265 <target name="deploy.available.app" if="app.kind.available"> 266 <propertyset id="app-properties"> 267 <propertyref prefix="org.bedework.app.${org.bedework.deploy.name}"/> 268 <globmapper from="org.bedework.app.${org.bedework.deploy.name}.*" to="propval.app.*"/> 269 </propertyset> 270 271 <ant antfile="${org.bedework.deployment.base}/${org.bedework.deploy.type}/${org.bedework.deploy.kind}/build.xml" 272 inheritrefs="true" target="deploy" > 273 <propertyset refid="app-properties" /> 274 </ant> 275 </target> 250 276 </project> trunk/calendar3/deployment/dumprestore/shellscr/build.xml
r293 r463 9 9 <dirname property="this.dir" file="${ant.file}"/> 10 10 11 <property name="app.sou.dir" location="${org.bedework. tools.base}" />11 <property name="app.sou.dir" location="${org.bedework.dumprestore.base}" /> 12 12 13 13 <property name="app.resources.dir" … … 47 47 <!-- Extra resources --> 48 48 <property name="app.temp.home" 49 location="${org.bedework.temp.shellscr.home}/bldtemp/${propval. zip.name}" />49 location="${org.bedework.temp.shellscr.home}/bldtemp/${propval.app.zip.name}" /> 50 50 <mkdir dir="${app.temp.home}"/> 51 51 <mkdir dir="${app.temp.home}/resources"/> 52 <copy todir="${app.temp.home}/resources">53 <fileset dir="${org.bedework.core.base}/resources/hbms" />54 </copy>55 <copy todir="${app.temp.home}/resources">56 <fileset dir="${org.bedework.core.base}/resources/properties" />57 </copy>58 52 <echo file="${app.temp.home}/resources/hibernate.properties"> 59 hibernate.dialect=${org.bedework.dump.arg.hibernate.dialect} 60 hibernate.connection.driver_class=${org.bedework.dump.arg.jdbcdriver} 61 hibernate.connection.username=${org.bedework.dump.arg.jdbcid} 62 hibernate.connection.password=${org.bedework.dump.arg.jdbcpw} 63 hibernate.connection.url=${org.bedework.dump.arg.jdbcurl} 53 hibernate.query.substitutions true 'T', false 'F', yes 'Y', no 'N' 54 hibernate.dialect=${propval.app.hibernate.dialect} 55 hibernate.connection.driver_class=${propval.app.jdbcdriver} 56 hibernate.connection.username=${propval.app.jdbcid} 57 hibernate.connection.password=${propval.app.jdbcpw} 58 hibernate.connection.url=${propval.app.jdbcurl} 59 hibernate.cglib.use_reflection_optimizer=false 60 # 61 # Here for better debugging 62 # 63 hibernate.jdbc.batch_size=0 64 64 </echo> 65 65 66 <fileset id="org.bedework.extra.resources" dir="${app.temp.home}/resources" > 67 </fileset> 66 <mkdir dir="${app.temp.home}/data"/> 67 <copy todir="${app.temp.home}/data" file="${app.sou.dir}/resources/initbedework.xml" /> 68 69 <fileset id="org.bedework.extra.resources" dir="${app.temp.home}/resources" /> 70 <fileset id="org.bedework.shellscr.data" dir="${app.temp.home}/data" /> 68 71 69 72 <!-- =============================================================== trunk/calendar3/deployment/dumprestore/shellscr/resources/dumpres.sh
r2 r463 12 12 RESTORECMD="$JAVA_HOME/bin/java -cp $cp @RESTORE-CLASS@" 13 13 14 14 APPNAME=@BW-APP-NAME@ 15 15 16 16 case "$1" in 17 17 dump) 18 echo $DUMPCMD - debug-f $2 $3 $4 $5 $6 $7 $8 $919 $DUMPCMD - debug-f $2 $3 $4 $5 $6 $7 $8 $918 echo $DUMPCMD -appname $APPNAME -f $2 $3 $4 $5 $6 $7 $8 $9 19 $DUMPCMD -appname $APPNAME -f $2 $3 $4 $5 $6 $7 $8 $9 20 20 ;; 21 21 restore) 22 echo $RESTORECMD - debug-f $2 $3 $4 $5 $6 $7 $8 $923 $RESTORECMD - debug-f $2 $3 $4 $5 $6 $7 $8 $922 echo $RESTORECMD -appname $APPNAME -f $2 $3 $4 $5 $6 $7 $8 $9 23 $RESTORECMD -appname $APPNAME -f $2 $3 $4 $5 $6 $7 $8 $9 24 24 ;; 25 25 backup) 26 26 TARGET=$2/$3`date +%Y%m%d_%H%M%S`.ldif 27 echo $RUNCMD -dump -f $TARGET 28 $RUNCMD -dump -f $TARGET 27 echo $DUMPCMD -appname $APPNAME -f $TARGET 28 $DUMPCMD -appname $APPNAME -f $TARGET 29 ;; 30 initdb) 31 echo $RESTORECMD -appname $APPNAME -f ./data/initbedework.xml -initSyspars 32 $RESTORECMD -appname $APPNAME -f ./data/initbedework.xml -initSyspars 29 33 ;; 30 34 *) 31 echo $"Usage: $0 {dump <filename>|restore <filename>|backup <directory> <prefix>} "35 echo $"Usage: $0 {dump <filename>|restore <filename>|backup <directory> <prefix>} || initdb" 32 36 esac 33 37 trunk/calendar3/deployment/dumprestore/shellscr/resources/log4j.xml
r297 r463 161 161 <!-- ================ --> 162 162 163 <!-- Limit the org.apache.commons category to INFO as its DEBUG is verbose --> 164 <category name="org.apache.commons"> 165 <priority value="INFO"/> 166 </category> 167 168 <category name="org.apache.commons.digester"> 169 <priority value="INFO"/> 170 </category> 171 172 <category name="org.apache.commons.digester.SimpleRegexMatcher"> 163 <!-- Limit the org.apache category to INFO as its DEBUG is verbose --> 164 <category name="org.apache"> 165 <priority value="INFO"/> 166 </category> 167 168 <!-- ical4j is noisy --> 169 <category name="net.fortuna.ical4j"> 170 <priority value="INFO"/> 171 </category> 172 173 <!-- caching is noisy too --> 174 <category name="net.sf.ehcache"> 173 175 <priority value="INFO"/> 174 176 </category> … … 203 205 <category name="edu.rpi"> 204 206 <priority value="DEBUG"/> 205 </category>206 207 <!-- Set washington categories -->208 <category name="edu.washington">209 <priority value="DEBUG"/>210 </category>211 212 <!-- Set hibernate categories213 Setting to DEBUG gives a lot of output.214 -->215 <category name="net.sf.hibernate">216 <priority value="INFO"/>217 207 </category> 218 208 trunk/calendar3/dumprestore/build.xml
r261 r463 16 16 <property name="dump.class" value="org.bedework.dumprestore.dump.Dump" /> 17 17 <property name="restore.class" value="org.bedework.dumprestore.restore.Restore" /> 18 19 <property name="org.bedework.dump.jdbcdriver.jar"20 value="${appserver.jdbcdriver.jar}" />21 22 <property name="dumprestore.run.base"23 location="${org.bedework.temp.home}/dumprestore"/>24 <property name="dumprestore.run.resources"25 location="${org.bedework.temp.home}/dumprestore/resources"/>26 <delete dir="${dumprestore.run.base}" />27 <mkdir dir="${dumprestore.run.base}" />28 <mkdir dir="${dumprestore.run.resources}" />29 30 <copy todir="${dumprestore.run.resources}">31 <fileset dir="${org.bedework.core.base}/resources/properties" />32 </copy>33 <copy todir="${dumprestore.run.resources}">34 <fileset dir="${org.bedework.core.base}/resources/hbms" />35 </copy>36 37 <path id="lib.dump.class.path">38 <fileset dir="${org.bedework.temp.jars}">39 <include name="*.jar"/>40 </fileset>41 <fileset dir="${org.bedework.default.lib}">42 <include name="*.jar"/>43 </fileset>44 <fileset dir="${hibernate.jars.dir}">45 <include name="*.jar"/>46 </fileset>47 <fileset dir="${digester.dir}">48 <include name="*.jar"/>49 </fileset>50 <fileset dir="${struts.dir}">51 <include name="*.jar"/>52 </fileset>53 54 <!-- local jdbc drivers -->55 <fileset dir="${org.bedework.jdbc.lib}">56 <include name="*.jar"/>57 </fileset>58 59 <!-- Include the quickstart jdbc driver -->60 <pathelement location="${hsqldb.jdbcdriver.jar}"/>61 62 <!-- add any properties we might want -->63 <pathelement location="${dumprestore.run.resources}" />64 <pathelement location="${org.bedework.dumprestore.base}/properties" />65 66 <!-- add the mapping file from appsuite -->67 <pathelement68 location="${org.bedework.appsuite.base}/resources/properties" />69 <pathelement70 location="${dumprestore.run.base}/resources/hibernate.properties"/>71 </path>72 73 <path id="lib.restore.class.path">74 <fileset dir="${org.bedework.temp.jars}">75 <include name="*.jar"/>76 </fileset>77 <fileset dir="${org.bedework.default.lib}">78 <include name="*.jar"/>79 </fileset>80 <fileset dir="${hibernate.jars.dir}">81 <include name="*.jar"/>82 </fileset>83 <fileset dir="${digester.dir}">84 <include name="*.jar"/>85 </fileset>86 <fileset dir="${struts.dir}">87 <include name="*.jar"/>88 </fileset>89 90 <!-- local jdbc drivers -->91 <fileset dir="${org.bedework.jdbc.lib}">92 <include name="*.jar"/>93 </fileset>94 95 <!-- Include the quickstart jdbc driver -->96 <pathelement location="${hsqldb.jdbcdriver.jar}"/>97 98 <!-- add any properties we might want -->99 <pathelement location="${dumprestore.run.resources}" />100 <pathelement location="${org.bedework.dumprestore.base}/properties" />101 102 <!-- add the mapping file from appsuite -->103 <pathelement104 location="${org.bedework.appsuite.base}/resources/properties" />105 <pathelement106 location="${dumprestore.run.base}/resources/hibernate.properties"/>107 </path>108 18 </target> 109 19 … … 128 38 <pathelement location="${digester.jar}"/> 129 39 <pathelement location="${hibernate.jar}"/> 40 <pathelement location="${org.bedework.calenv.jar}"/> 130 41 <pathelement location="${org.bedework.calfacadeshared.jar}"/> 131 42 <pathelement location="${org.bedework.calsvci.jar}"/> … … 145 56 <target name="dumpdb" depends="init" 146 57 description="Run bedework db dump app"> 147 148 <echo file="${dumprestore.run.base}/resources/hibernate.properties">149 hibernate.query.substitutions true 'T', false 'F', yes 'Y', no 'N'150 hibernate.dialect=${org.bedework.dump.arg.hibernate.dialect}151 hibernate.connection.driver_class=${org.bedework.dump.arg.jdbcdriver}152 hibernate.connection.username=${org.bedework.dump.arg.jdbcid}153 hibernate.connection.password=${org.bedework.dump.arg.jdbcpw}154 hibernate.connection.url=${org.bedework.dump.arg.jdbcurl}155 </echo>156 157 <pathconvert property="lib.txt.classpath"158 refid="lib.dump.class.path"159 targetos="unix" pathsep=":" />160 161 <echo message="cp: ${lib.txt.classpath}" />162 163 <echo message=" " />164 <echo message="dumping to ${org.bedework.dump.arg.dumpfile}" />165 166 <java classname="${dump.class}"167 fork="true"168 failonerror="true">169 <classpath refid="lib.dump.class.path" />170 <arg value="${org.bedework.dump.arg.debug}" />171 <arg value="-f" />172 <arg value="${org.bedework.dump.arg.dumpfile}" />173 <!--174 <arg value="-Djava.endorsed.dir=${org.bedework.default.lib}/endorsed"/>-->175 </java>176 58 </target> 177 59 … … 199 81 <fail if="do.abort">restore aborted by user.</fail> 200 82 201 <echo file="${dumprestore.run.base}/resources/hibernate.properties">202 hibernate.query.substitutions true 'T', false 'F', yes 'Y', no 'N'203 hibernate.dialect=${org.bedework.restore.arg.hibernate.dialect}204 hibernate.connection.driver_class=${org.bedework.restore.arg.jdbcdriver}205 hibernate.connection.username=${org.bedework.restore.arg.jdbcid}206 hibernate.connection.password=${org.bedework.restore.arg.jdbcpw}207 hibernate.connection.url=${org.bedework.restore.arg.jdbcurl}208 #209 # Here for better debugging210 #211 hibernate.jdbc.batch_size=0212 </echo>213 214 83 <pathconvert property="lib.txt.classpath" 215 84 refid="lib.restore.class.path" … … 217 86 218 87 <echo message="cp: ${lib.txt.classpath}" /> 219 220 <echo message=" " />221 <echo message="restoring from ${org.bedework.restore.arg.dumpfile}" />222 223 <java classname="${restore.class}"224 fork="true"225 failonerror="true">226 <classpath refid="lib.restore.class.path" />227 <arg value="${org.bedework.restore.arg.debug}" />228 <arg value="-supergroup" />229 <arg value="${org.bedework.restore.supergroup}" />230 <arg value="-f" />231 <arg value="${org.bedework.restore.arg.dumpfile}" />232 <arg value="${org.bedework.restore.arg.from2p3px}" />233 <arg line="${org.bedework.restore.arg.defaultpubliccal}" />234 <arg line="${org.bedework.restore.arg.timezones}" />235 236 <arg value="-sysname" />237 <arg value="${org.bedework.global.system.name}" />238 <arg value="-tzid" />239 <arg value="${org.bedework.syspar.tzid}" />240 <arg value="-sysid" />241 <arg value="${org.bedework.syspar.systemid}" />242 243 <arg value="-publiccalroot" />244 <arg value="${org.bedework.syspar.public.calroot}" />245 <arg value="-usercalroot" />246 <arg value="${org.bedework.syspar.user.calroot}" />247 <arg value="-defusercal" />248 <arg value="${org.bedework.syspar.default.user.calendar}" />249 <arg value="-deftrashcal" />250 <arg value="${org.bedework.syspar.default.trash.calendar}" />251 <arg value="-definbox" />252 <arg value="${org.bedework.syspar.default.user.inbox}" />253 <arg value="-defoutbox" />254 <arg value="${org.bedework.syspar.default.user.outbox}" />255 <arg value="-defuview" />256 <arg line="${org.bedework.syspar.default.user.view}" />257 258 <arg value="-pu" />259 <arg value="${org.bedework.syspar.public.user}" />260 261 <arg value="-onlyusers" />262 <arg value="${org.bedework.onlyusers}" />263 264 <arg value="-httpconnsperuser" />265 <arg value="${org.bedework.syspar.http.connections.peruser}" />266 <arg value="-httpconnsperhost" />267 <arg value="${org.bedework.syspar.http.connections.perhost}" />268 <arg value="-httpconns" />269 <arg value="${org.bedework.syspar.http.connections}" />270 271 <arg value="-userauthClass" />272 <arg value="${org.bedework.syspar.userauthclass}" />273 <arg value="-mailerClass" />274 <arg value="${org.bedework.syspar.mailerclass}" />275 <arg value="-admingroupsClass" />276 <arg value="${org.bedework.syspar.admingroupsclass}" />277 <arg value="-usergroupsClass" />278 <arg value="${org.bedework.syspar.usergroupsclass}" />279 <jvmarg value="-mx128m" />280 <jvmarg value="-ms128m" />281 <!--282 <jvmarg value="-Xrunyjpagent:cpu=times,onexit=cpu" />283 -->284 <!--285 <arg value="-Djava.endorsed.dir=${org.bedework.default.lib}/endorsed"/>-->286 </java>287 88 </target> 288 89 trunk/calendar3/dumprestore/src/org/bedework/dumprestore/dump/Dump.java
r48 r463 29 29 package org.bedework.dumprestore.dump; 30 30 31 import org.bedework.calenv.CalOptions; 31 32 import org.bedework.dumprestore.Defs; 33 import org.bedework.dumprestore.DumpRestoreConfig; 32 34 import org.bedework.dumprestore.dump.dumpling.DumpAll; 33 34 35 35 36 import java.io.FileWriter; 36 37 import java.io.OutputStreamWriter; 38 39 import org.apache.log4j.Logger; 37 40 38 41 /** Application to dump calendar data. 39 42 * 40 43 * @author Mike Douglass douglm@rpi.edu 41 * @version 1.044 * @version 3.1 42 45 */ 43 46 public class Dump implements Defs { 47 private transient Logger log; 48 49 /* Properties can be supplied via the command line or via a the properties 50 * file with the prefix propertyPrefix + appName + "." 51 */ 52 private String appPrefix = "org.bedework.app."; 53 54 private String appName; 55 44 56 DumpIntf di; 45 57 … … 59 71 60 72 void open() throws Throwable { 61 di = new HibDump(globals. debug);73 di = new HibDump(globals.config.getDebug()); 62 74 63 75 if (fileName == null) { … … 83 95 84 96 void processArgs(String[] args) throws Throwable { 85 if (args == null) { 86 return; 87 } 97 /* Look for appname arg */ 88 98 89 99 for (int i = 0; i < args.length; i++) { 90 100 if (args[i].equals("-debug")) { 91 globals. debug = true;101 globals.config.setDebug(true); 92 102 } else if (args[i].equals("-ndebug")) { 93 globals.debug = false; 103 globals.config.setDebug(false); 104 } else if (args[i].equals("")) { 105 // null arg generated by ant 94 106 } else if (args[i].equals("-noarg")) { 107 // noop 108 } else if (argpar("-appname", args, i)) { 109 i++; 110 // done earlier 95 111 } else if (argpar("-f", args, i)) { 96 112 i++; … … 100 116 //id = args[i]; 101 117 } else { 102 dmsg("Illegal argument: " + args[i]);118 error("Illegal argument: " + args[i]); 103 119 throw new Exception("Invalid args"); 104 120 } … … 117 133 } 118 134 119 static void dmsg(String s) { 120 System.out.println(s); 135 void getConfigProperties(String[] args) throws Throwable { 136 /* Look for the appname arg */ 137 138 if (args != null) { 139 for (int i = 0; i < args.length; i++) { 140 if (argpar("-appname", args, i)) { 141 i++; 142 appName = args[i]; 143 break; 144 } 145 } 146 } 147 148 if (appName == null) { 149 error("Missing required argument -appname"); 150 throw new Exception("Invalid args"); 151 } 152 153 globals.init((DumpRestoreConfig)CalOptions.getProperty(appPrefix + appName)); 154 } 155 156 protected Logger getLog() { 157 if (log == null) { 158 log = Logger.getLogger(this.getClass()); 159 } 160 161 return log; 162 } 163 164 protected void error(String msg) { 165 getLog().error(msg); 166 } 167 168 protected void info(String msg) { 169 getLog().info(msg); 170 } 171 172 protected void trace(String msg) { 173 getLog().debug(msg); 121 174 } 122 175 … … 128 181 129 182 try { 183 long startTime = System.currentTimeMillis(); 184 130 185 d = new Dump(); 131 186 187 d.getConfigProperties(args); 188 132 189 d.processArgs(args); 133 190 … … 137 194 138 195 d.stats(); 196 197 long millis = System.currentTimeMillis() - startTime; 198 long seconds = millis / 1000; 199 long minutes = seconds / 60; 200 seconds -= (minutes * 60); 201 202 d.info("Elapsed time: " + minutes + ":" + twoDigits(seconds)); 139 203 } catch (Throwable t) { 140 204 t.printStackTrace(); … … 147 211 } 148 212 } 213 214 private static String twoDigits(long val) { 215 if (val < 10) { 216 return "0" + val; 217 } 218 219 return String.valueOf(val); 220 } 149 221 } 150 trunk/calendar3/dumprestore/src/org/bedework/dumprestore/dump/DumpGlobals.java
r218 r463 29 29 package org.bedework.dumprestore.dump; 30 30 31 import org.bedework.dumprestore.DumpRestoreConfig; 32 31 33 import java.io.Writer; 32 34 import java.util.Stack; … … 36 38 * 37 39 */ 38 /**39 * @author douglm40 *41 */42 40 public class DumpGlobals { 43 /** */ 44 public boolean debug; 41 /** Config properties from options file. 42 */ 43 public DumpRestoreConfig config; 45 44 46 45 /** */ … … 89 88 /** */ 90 89 public int events; 91 90 92 91 /** */ 93 92 public int eventAnnotations; … … 152 151 return out; 153 152 } 153 154 /** 155 * @param config 156 */ 157 public void init(DumpRestoreConfig config) { 158 this.config = config; 159 } 154 160 } trunk/calendar3/dumprestore/src/org/bedework/dumprestore/dump/dumpling/DumpAttendees.java
r49 r463 68 68 tagStart(objectAttendee); 69 69 70 taggedEntityId(a);70 ownedEntityTags(a); 71 71 taggedVal("cutype", a.getCuType()); 72 72 taggedVal("delegated-from", a.getDelegatedFrom()); 73 taggedVal("getDelegatedTo-to", a.getCn()); 73 taggedVal("delegated-to", a.getDelegatedTo()); 74 taggedVal("cn", a.getCn()); 74 75 taggedVal("dir", a.getDir()); 75 76 taggedVal("lang", a.getLanguage()); trunk/calendar3/dumprestore/src/org/bedework/dumprestore/dump/dumpling/DumpAuthUsers.java
r49 r463 29 29 package org.bedework.dumprestore.dump.dumpling; 30 30 31 import org.bedework.calfacade.BwCalendar; 31 32 import org.bedework.calfacade.BwCategory; 32 33 import org.bedework.calfacade.BwLocation; … … 129 130 tagEnd("preferredSponsors"); 130 131 } 132 133 s = aup.getPreferredCalendars(); 134 if ((s != null) && (s.size() > 0)) { 135 tagStart("preferredCalendars"); 136 137 Iterator si = s.iterator(); 138 139 while (si.hasNext()) { 140 BwCalendar p = (BwCalendar)si.next(); 141 142 taggedVal("preferredCalendar", p.getPath()); 143 } 144 145 tagEnd("preferredCalendars"); 146 } 131 147 } 132 148 trunk/calendar3/dumprestore/src/org/bedework/dumprestore/dump/dumpling/DumpEvents.java
r243 r463 45 45 public class DumpEvents extends Dumpling { 46 46 protected boolean annotations; 47 47 48 48 /** Constructor 49 49 * … … 78 78 BwEventAnnotation ann = null; 79 79 80 if (e instanceof BwEventAnnotation) {81 ann = (BwEventAnnotation)e;82 taggedVal("target", ann.getTarget().getId());83 taggedVal("master", ann.getMaster().getId());84 }85 86 80 if (ann == null) { 87 81 tagStart(objectEvent); … … 93 87 94 88 taggedVal("name", e.getName()); 95 taggedVal("guid", e.getGuid());96 89 taggedVal("summary", e.getSummary()); 97 90 taggedVal("description", e.getDescription()); … … 99 92 taggedDateTime("start", e.getDtstart()); 100 93 taggedDateTime("end", e.getDtend()); 94 taggedVal("end-type", e.getEndType()); 101 95 taggedVal("duration", e.getDuration()); 102 taggedVal("end-type", e.getEndType());103 96 104 97 taggedVal("link", e.getLink()); 98 taggedVal("deleted", e.getDeleted()); 105 99 taggedVal("status", e.getStatus()); 106 100 taggedVal("cost", e.getCost()); 107 taggedVal("deleted", e.getDeleted()); 101 102 taggedEntityId("organizer", e.getOrganizer()); 108 103 109 104 taggedVal("dtstamp", e.getDtstamp()); … … 113 108 taggedVal("priority", e.getPriority()); 114 109 taggedVal("sequence", e.getSequence()); 110 111 taggedEntityId("sponsor", e.getSponsor()); 112 taggedEntityId("location", e.getLocation()); 113 114 taggedVal("guid", e.getGuid()); 115 taggedVal("transparency", e.getTransparency()); 115 116 116 117 tagStart("eventCategories"); … … 125 126 126 127 tagEnd("eventCategories"); 127 128 taggedEntityId("sponsor", e.getSponsor());129 taggedEntityId("location", e.getLocation());130 taggedEntityId("organizer", e.getOrganizer());131 132 taggedVal("transparency", e.getTransparency());133 128 134 129 tagStart("eventAttendees"); … … 181 176 if (ann == null) { 182 177 tagEnd(objectEvent); 183 178 184 179 globals.events++; 185 180 } else { 186 tagged Val("target", ann.getTarget().getId());187 tagged Val("master", ann.getMaster().getId());181 taggedEventKey("target", ann.getTarget()); 182 taggedEventKey("master", ann.getMaster()); 188 183 tagEnd(objectEventAnnotation); 189 184 190 185 globals.eventAnnotations++; 191 186 } trunk/calendar3/dumprestore/src/org/bedework/dumprestore/dump/dumpling/DumpUserPrefs.java
r59 r463 85 85 taggedVal("sub-id", sub.getId()); 86 86 taggedVal("sub-seq", sub.getSeq()); 87 taggedVal("sub-owner", sub.getOwner().getId()); 88 87 89 taggedVal("sub-name", sub.getName()); 88 taggedVal("sub-owner", sub.getOwner().getId());89 90 taggedVal("sub-uri", sub.getUri()); 90 91 taggedVal("sub-affectsFreeBusy", sub.getAffectsFreeBusy()); 92 taggedVal("sub-ignoreTransparency", sub.getIgnoreTransparency()); 91 93 taggedVal("sub-display", sub.getDisplay()); 92 94 taggedVal("sub-style", sub.getStyle()); … … 119 121 taggedVal("view-id", view.getId()); 120 122 taggedVal("view-seq", view.getSeq()); 123 taggedVal("view-owner", view.getOwner().getId()); 121 124 taggedVal("view-name", view.getName()); 122 taggedVal("view-owner", view.getOwner().getId());123 125 124 126 Collection vs = view.getSubscriptions(); … … 132 134 BwSubscription sub = (BwSubscription)vsi.next(); 133 135 134 taggedVal("view-sub- id", sub.getId());136 taggedVal("view-sub-name", sub.getName()); 135 137 } 136 138 … … 146 148 taggedVal("email", p.getEmail()); 147 149 if (p.getDefaultCalendar() != null) { 148 taggedVal("default -calendar", p.getDefaultCalendar().getId());150 taggedVal("defaultCalendar", p.getDefaultCalendar().getPath()); 149 151 } 150 152 taggedVal("skinName", p.getSkinName()); … … 155 157 taggedVal("workdayStart", p.getWorkdayStart()); 156 158 taggedVal("workdayEnd", p.getWorkdayEnd()); 159 taggedVal("preferredEndType", p.getPreferredEndType()); 160 taggedVal("userMode", p.getUserMode()); 157 161 158 162 tagEnd(objectUserPrefs); trunk/calendar3/dumprestore/src/org/bedework/dumprestore/dump/dumpling/Dumpling.java
r415 r463 55 55 56 56 import org.bedework.calfacade.BwDateTime; 57 import org.bedework.calfacade.BwEvent; 57 58 import org.bedework.calfacade.BwGroup; 58 59 import org.bedework.calfacade.BwPrincipal; … … 164 165 } 165 166 167 protected void ownerKey(BwPrincipal val) throws Throwable { 168 taggedVal("owner-account", val.getAccount()); 169 taggedVal("owner-kind", val.getKind()); 170 } 171 166 172 protected void groupTags(BwGroup val) throws Throwable { 167 173 principalTags(val); … … 195 201 shareableEntityTags(entity); 196 202 197 taggedEntityId("calendar", entity.getCalendar()); 203 if (entity.getCalendar() == null) { 204 // Sould check validity here. Only valid for calendar roots. 205 taggedVal("calendar", ""); 206 } else { 207 taggedVal("calendar", entity.getCalendar().getPath()); 208 } 198 209 } 199 210 … … 223 234 taggedVal(prefix + "-dtval", dt.getDtval()); 224 235 taggedVal(prefix + "-date", dt.getDate()); 236 } 237 238 protected void taggedEventKey(String prefix, BwEvent ev) throws Throwable { 239 taggedVal(prefix + "-calendar", ev.getCalendar().getPath()); 240 taggedVal(prefix + "-guid", ev.getGuid()); 241 if (ev.getRecurring()) { 242 taggedVal(prefix + "-recurrenceId", ev.getRecurrence().getRecurrenceId()); 243 } 225 244 } 226 245 trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/HibRestore.java
r299 r463 56 56 57 57 import org.bedework.calfacade.BwAlarm; 58 import org.bedework.calfacade.BwAttendee; 58 59 import org.bedework.calfacade.BwCalendar; 59 60 import org.bedework.calfacade.BwCategory; … … 86 87 87 88 import org.apache.log4j.Logger; 89 import org.hibernate.FlushMode; 88 90 import org.hibernate.Query; 89 91 import org.hibernate.SessionFactory; … … 104 106 //private HibSession sess; 105 107 private SessionFactory sessFactory; 106 107 108 109 108 110 private Session hibSess; 109 111 private StatelessSession sess; 110 112 111 113 private int adminGroupId = 1; 112 114 … … 127 129 128 130 /* (non-Javadoc) 129 * @see org.bedework.dumprestore.restore.RestoreIntf#init(java.lang.String, java.lang.String, java.lang.String, java.lang.String, int, org.bedework.dumprestore.restore.RestoreGlobals)130 */131 public void init(String url,132 String className,133 String id,134 String pw,135 RestoreGlobals globals) throws Throwable {136 this.globals = globals;137 }138 139 /* (non-Javadoc)140 131 * @see org.bedework.dumprestore.restore.RestoreIntf#init(org.bedework.dumprestore.restore.RestoreGlobals) 141 132 */ … … 148 139 */ 149 140 public void open() throws Throwable { 141 } 142 143 public void startTransaction() throws Throwable { 144 // Open delayed till retore method called 145 } 146 147 public void endTransaction() throws Throwable { 148 if (sess != null) { 149 closeSession(); 150 } 151 152 if (hibSess != null) { 153 closeHibSession(); 154 } 150 155 } 151 156 … … 176 181 */ 177 182 public void restoreUser(BwUser o) throws Throwable { 178 if (globals.onlyUsers && 183 if (globals.onlyUsers && 179 184 (globals.onlyUsersMap.get(o.getAccount()) == null)) { 180 185 return; 181 186 } 182 187 183 188 try { 184 189 openSess(); … … 200 205 */ 201 206 public void restoreUserInfo(BwUserInfo o) throws Throwable { 202 if (globals.onlyUsers && 207 if (globals.onlyUsers && 203 208 (globals.onlyUsersMap.get(o.getUser().getAccount()) == null)) { 204 209 return; 205 210 } 206 211 207 212 openHibSess(); 208 213 … … 216 221 return; 217 222 } 218 223 219 224 openSess(); 220 225 … … 222 227 223 228 closeSess(); 229 } 230 231 public void restoreAttendee(BwAttendee o) throws Throwable { 232 // Ensure id not set 233 o.setId(CalFacadeDefs.unsavedItemKey); 234 235 openHibSess(); 236 237 hibSess.save(o); 238 239 closeHibSess(); 224 240 } 225 241 … … 230 246 openSess(); 231 247 232 if (globals. from2p3px) {248 if (globals.config.getFrom2p3px()) { 233 249 // No id assigned 234 250 o.setId(adminGroupId); 235 251 adminGroupId++; 236 252 } 237 253 238 254 if (globals.onlyUsers) { 239 255 if (globals.onlyUsersMap.get(o.getGroupOwner().getAccount()) == null) { … … 241 257 } 242 258 } 243 259 244 260 save(o); 245 261 … … 254 270 while (it.hasNext()) { 255 271 BwPrincipal pr = (BwPrincipal)it.next(); 256 257 if (globals.onlyUsers && 272 273 if (globals.onlyUsers && 258 274 (pr instanceof BwUser) && 259 275 (globals.onlyUsersMap.get(((BwUser)pr).getAccount()) == null)) { 260 276 continue; 261 277 } 262 278 263 279 openSess(); 264 280 … … 280 296 */ 281 297 public void restoreAuthUser(BwAuthUser o) throws Throwable { 282 if (globals.onlyUsers && 298 if (globals.onlyUsers && 283 299 (globals.onlyUsersMap.get(o.getUser().getAccount()) == null)) { 284 300 return; 285 301 } 286 302 287 303 openHibSess(); 288 304 … … 290 306 // o.setId(o.getUser().getId()); 291 307 // } 292 308 293 309 hibSave(o); 294 310 … … 303 319 return; 304 320 } 305 321 306 322 openHibSess(); 307 323 … … 318 334 return; 319 335 } 320 336 321 337 openHibSess(); 322 338 … … 333 349 return; 334 350 } 335 351 336 352 openSess(); 337 353 … … 348 364 return null; 349 365 } 350 366 351 367 openSess(); 352 368 … … 359 375 q.setString("address", o.getAddress()); 360 376 q.setEntity("owner", o.getOwner()); 361 377 362 378 Integer i = (Integer)q.uniqueResult(); 363 379 … … 377 393 return null; 378 394 } 379 395 380 396 openSess(); 381 397 … … 414 430 // XXX need fixing and we're not using them yet 415 431 openHibSess(); 416 432 417 433 hibSave(o); 418 434 419 435 closeHibSess(); 420 436 } … … 425 441 return; 426 442 } 427 443 428 444 openHibSess(); 429 445 … … 457 473 return; 458 474 } 459 475 460 476 openHibSess(); 461 477 … … 466 482 467 483 public void update(BwUser user) throws Throwable { 468 if (globals.onlyUsers && 484 if (globals.onlyUsers && 469 485 (globals.onlyUsersMap.get(user.getAccount()) == null)) { 470 486 return; 471 487 } 472 488 473 489 openSess(); 474 490 … … 526 542 return; 527 543 } 528 544 529 545 openSess(); 530 546 … … 534 550 535 551 closeSess(); 552 } 553 554 public BwCalendar getCalendar(String path) throws Throwable { 555 openHibSess(); 556 557 Query q = hibSess.createQuery("from org.bedework.calfacade.BwCalendar cal where " + 558 "cal.path=:path"); 559 q.setString("path", path); 560 BwCalendar cal = (BwCalendar)q.uniqueResult(); 561 562 return cal; 563 } 564 565 public void saveRootCalendar(BwCalendar val) throws Throwable { 566 if (!checkOnlyUser(val)) { 567 return; 568 } 569 570 // Ensure id not set 571 val.setId(CalFacadeDefs.unsavedItemKey); 572 573 openHibSess(); 574 575 hibSess.save(val); 576 577 closeHibSess(); 536 578 } 537 579 … … 542 584 * calls then update the structure with hibernate. 543 585 */ 544 public void restoreCalendar(BwCalendar o) throws Throwable { 545 if (!checkOnlyUser(o)) { 546 return; 547 } 548 549 openSess(); 550 551 restoreCalendar(o, sess.connection()); 552 553 closeSess(); 586 public void addCalendar(BwCalendar o) throws Throwable { 587 if (!checkOnlyUser(o)) { 588 return; 589 } 590 591 // Ensure id not set 592 o.setId(CalFacadeDefs.unsavedItemKey); 593 594 openHibSess(); 595 596 BwCalendar parent = o.getCalendar(); 597 598 parent.addChild(o); 599 600 // hibSess.update(parent); 601 602 closeHibSess(); 554 603 } 555 604 … … 562 611 return; 563 612 } 564 613 565 614 restoreCalendar(val, conn); 566 615 … … 579 628 } 580 629 581 /* Restore a single calendar. Don't restore children 630 /* The only reason for this is the need to preserve the calendar id. 631 * From 3.x on this need will not exist. Just use hibernate. 632 * 633 * Restore a single calendar. Don't restore children 582 634 */ 583 635 private void restoreCalendar(BwCalendar val, Connection conn) throws Throwable { … … 585 637 return; 586 638 } 587 639 588 640 PreparedStatement ps = null; 589 641 … … 591 643 ps = conn.prepareStatement( 592 644 "INSERT INTO calendars " + 593 "(id, seq, creatorid, ownerid, access, " +594 "publick, name, path, summary, description," +595 " mail_list_id, calendar_collection, parent ) " +645 "(id, seq, creatorid, ownerid, bwaccess, " + 646 "publick, calname, path, summary, description," + 647 " mail_list_id, calendar_collection, parent, caltype) " + 596 648 "VALUES (?,?,?,?,?," + 597 649 "?,?,?,?,?," + 598 "?,?,? )");650 "?,?,?,?)"); 599 651 600 652 ps.setInt(1, val.getId()); … … 618 670 ps.setInt(13, val.getCalendar().getId()); 619 671 } 672 ps.setInt(14, val.getCalType()); 620 673 621 674 ps.executeUpdate(); … … 633 686 if (sess == null) { 634 687 sess = sessFactory.openStatelessSession(); 635 }636 sess.beginTransaction();688 sess.beginTransaction(); 689 } 637 690 } 638 691 … … 640 693 if (hibSess == null) { 641 694 hibSess = sessFactory.openSession(); 642 } 643 hibSess.beginTransaction(); 644 } 645 646 private synchronized void closeHibSess() throws Throwable { 695 hibSess.setFlushMode(FlushMode.COMMIT); 696 hibSess.beginTransaction(); 697 } 698 } 699 700 private void closeHibSess() throws Throwable { 701 endTransaction(); 702 } 703 704 private synchronized void closeHibSession() throws Throwable { 647 705 hibSess.getTransaction().commit(); 648 706 try { … … 660 718 661 719 private synchronized void closeSess() throws Throwable { 662 sess.getTransaction().commit(); 720 endTransaction(); 721 } 722 723 private synchronized void closeSession() throws Throwable { 724 if (sess.getTransaction() != null) { 725 sess.getTransaction().commit(); 726 } 663 727 try { 664 728 if (sess != null) { … … 673 737 } 674 738 } 675 739 676 740 private void hibSave(Object o) throws Throwable { 677 741 hibSess.save(o); 678 742 } 679 743 680 744 private void save(Object o) throws Throwable { 681 745 sess.insert(o); … … 699 763 sess.commit(); 700 764 }*/ 701 765 702 766 private boolean checkOnlyUser(BwOwnedDbentity ent) { 703 767 if (!globals.onlyUsers) { 704 768 return true; 705 769 } 706 770 707 771 if (globals.onlyUsersMap.get(ent.getOwner().getAccount()) == null) { 708 772 return false; 709 773 } 710 774 711 775 return true; 712 776 } 713 777 714 778 private boolean checkOnlyUser(BwShareableDbentity ent) { 715 779 if (!globals.onlyUsers) { 716 780 return true; 717 781 } 718 782 719 783 if (globals.onlyUsersMap.get(ent.getOwner().getAccount()) == null) { 720 784 return false; 721 785 } 722 786 723 787 if (globals.onlyUsersMap.get(ent.getCreator().getAccount()) == null) { 724 788 ent.setCreator(ent.getOwner()); 725 789 } 726 790 727 791 return true; 728 792 } trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/Restore.java
r415 r463 54 54 package org.bedework.dumprestore.restore; 55 55 56 import org.bedework.calenv.CalOptions; 56 57 import org.bedework.calfacade.BwCalendar; 58 import org.bedework.calfacade.BwSystem; 57 59 import org.bedework.calfacade.BwUser; 58 60 import org.bedework.calfacade.svc.BwAdminGroup; … … 61 63 import org.bedework.calfacade.svc.BwView; 62 64 import org.bedework.dumprestore.Defs; 65 import org.bedework.dumprestore.DumpRestoreConfig; 63 66 import org.bedework.dumprestore.restore.rules.RestoreRuleSet; 64 67 … … 76 79 * 77 80 * @author Mike Douglass douglm@rpi.edu 78 * @version 1.081 * @version 3.1 79 82 */ 80 83 public class Restore implements Defs { 81 84 private transient Logger log; 82 85 86 /* Properties can be supplied via the command line or via a the properties 87 * file with the prefix propertyPrefix + appName + "." 88 */ 89 private String appPrefix = "org.bedework.app."; 90 91 private String appName; 92 93 /* File we restore from */ 94 private String filename; 95 83 96 //private boolean concatdesc = false; 84 97 85 98 //private boolean printData = false; 86 87 /** The dump file88 */89 private String fileName;90 91 /* runtime arg -i (id) */92 private String id = "sa";93 94 /* runtime arg -p (password) */95 private String pw = "";96 97 /* runtime arg -u (url) */98 private String url = "jdbc:hsqldb:hsql://localhost:8887";99 100 /* runtime arg -d (driver) */101 private String driver = "org.hsqldb.jdbcDriver";102 99 103 100 private RestoreGlobals globals = new RestoreGlobals(); … … 122 119 if (globals.rintf == null) { 123 120 // globals.rintf = new JdbcRestore(); 124 globals.rintf = new HibRestore(globals. debug);125 globals.rintf.init( url, driver, id, pw,globals);121 globals.rintf = new HibRestore(globals.config.getDebug()); 122 globals.rintf.init(globals); 126 123 globals.rintf.open(); 127 124 } 128 125 129 if (globals. from2p3px) {126 if (globals.config.getFrom2p3px()) { 130 127 // System prefs are set up by run time pars 131 128 … … 150 147 151 148 digester.addRuleSet(new RestoreRuleSet(globals)); 152 digester.parse(new FileReader(file Name));153 154 if (globals. from2p3px) {149 digester.parse(new FileReader(filename)); 150 151 if (globals.config.getFrom2p3px()) { 155 152 makePrefs(); 156 153 if (globals.rintf != null) { … … 286 283 287 284 for (int i = 0; i < args.length; i++) { 288 if (args[i].equals("")) { 285 if (args[i].equals("-debug")) { 286 globals.config.setDebug(true); 287 } else if (args[i].equals("-ndebug")) { 288 globals.config.setDebug(false); 289 } else if (args[i].equals("")) { 289 290 // null arg generated by ant 290 } else if (args[i].equals("-debug")) {291 globals.debug = true;292 } else if (args[i].equals("-ndebug")) {293 globals.debug = false;294 } else if (args[i].equals("-debugentity")) {295 globals.debugEntity = true;296 } else if (args[i].equals("-ndebugentity")) {297 globals.debugEntity = false;298 291 } else if (args[i].equals("-noarg")) { 299 globals.debug = false;300 } else if (argpar("- supergroup", args, i)) {301 i++; 302 globals.superGroupName = args[i];303 } else if (arg par("-defaultpubliccal", args, i)) {304 i++;305 globals.defaultPublicCalPath = args[i];306 trace("Setting null event calendars to " + args[i]);307 } else if (args[i].equals("-from2p3px")) {308 globals.from2p3px = true;292 // noop 293 } else if (argpar("-appname", args, i)) { 294 i++; 295 // done earlier 296 } else if (args[i].equals("-initSyspars")) { 297 // done earlier 298 } else if (argpar("-f", args, i)) { 299 i++; 300 filename = args[i]; 301 /* Can we override these in the hibernate properties? 309 302 } else if (argpar("-d", args, i)) { 310 303 i++; … … 319 312 i++; 320 313 url = args[i]; 321 } else if (argpar("-f", args, i)) { 322 i++; 323 fileName = args[i]; 324 } else if (argpar("-timezones", args, i)) { 325 i++; 326 globals.timezonesFilename = args[i]; 327 328 /* System parameters */ 329 } else if (argpar("-sysname", args, i)) { 330 i++; 331 globals.syspars.setName(args[i]); 332 } else if (argpar("-tzid", args, i)) { 333 i++; 334 globals.syspars.setTzid(args[i]); 335 } else if (argpar("-sysid", args, i)) { 336 i++; 337 globals.syspars.setSystemid(args[i]); 338 } else if (argpar("-publiccalroot", args, i)) { 339 i++; 340 globals.syspars.setPublicCalendarRoot(args[i]); 341 } else if (argpar("-usercalroot", args, i)) { 342 i++; 343 globals.syspars.setUserCalendarRoot(args[i]); 344 } else if (argpar("-defusercal", args, i)) { 345 i++; 346 globals.syspars.setUserDefaultCalendar(args[i]); 347 } else if (argpar("-deftrashcal", args, i)) { 348 i++; 349 globals.syspars.setDefaultTrashCalendar(args[i]); 350 } else if (argpar("-definbox", args, i)) { 351 i++; 352 globals.syspars.setUserInbox(args[i]); 353 } else if (argpar("-defoutbox", args, i)) { 354 i++; 355 globals.syspars.setUserOutbox(args[i]); 356 } else if (argpar("-defuview", args, i)) { 357 i++; 358 globals.syspars.setDefaultUserViewName(args[i]); 359 360 } else if (argpar("-pu", args, i)) { 361 i++; 362 globals.syspars.setPublicUser(args[i]); 314 */ 363 315 364 316 } else if (argpar("-onlyusers", args, i)) { … … 375 327 } 376 328 377 } else if (argpar("-httpconnsperuser", args, i)) {378 i++;379 globals.syspars.setHttpConnectionsPerUser(intPar(args[i]));380 globals.sysparsSetHttpConnectionsPerUser = true;381 } else if (argpar("-httpconnsperhost", args, i)) {382 i++;383 globals.syspars.setHttpConnectionsPerHost(intPar(args[i]));384 globals.sysparsSetHttpConnectionsPerHost = true;385 } else if (argpar("-httpconns", args, i)) {386 i++;387 globals.syspars.setHttpConnections(intPar(args[i]));388 globals.sysparsSetHttpConnections = true;389 390 } else if (argpar("-defuquota", args, i)) {391 i++;392 globals.syspars.setDefaultUserQuota(longPar(args[i]));393 globals.sysparsSetDefaultUserQuota = true;394 395 } else if (argpar("-userauthClass", args, i)) {396 i++;397 globals.syspars.setUserauthClass(args[i]);398 } else if (argpar("-mailerClass", args, i)) {399 i++;400 globals.syspars.setMailerClass(args[i]);401 } else if (argpar("-admingroupsClass", args, i)) {402 i++;403 globals.syspars.setAdmingroupsClass(args[i]);404 } else if (argpar("-usergroupsClass", args, i)) {405 i++;406 globals.syspars.setUsergroupsClass(args[i]);407 329 } else { 408 330 error("Illegal argument: '" + args[i] + "'"); … … 415 337 } 416 338 417 private int intPar(String par) throws Throwable {418 return Integer.parseInt(par);419 }420 421 private long longPar(String par) throws Throwable {422 return Long.parseLong(par);423 }424 425 339 void usage() { 426 340 System.out.println("Usage:"); 427 System.out.println("args -debug"); 428 System.out.println(" -ndebug"); 429 System.out.println(" -f filename"); 430 System.out.println(" define name of input file"); 431 System.out.println(" -concatdesc"); 432 System.out.println(" put all event description in one field"); 433 System.out.println(" -jdbc"); 434 System.out.println(" Update the database via jdbc"); 435 System.out.println(" -printdata"); 436 System.out.println(" print the data before restore"); 341 System.out.println("args -appname name"); 342 System.out.println(" -f restorefilename"); 437 343 System.out.println(""); 438 344 } … … 447 353 } 448 354 return true; 355 } 356 357 void getConfigProperties(String[] args) throws Throwable { 358 /* Look for the appname arg */ 359 360 if (args != null) { 361 for (int i = 0; i < args.length; i++) { 362 if (argpar("-appname", args, i)) { 363 i++; 364 appName = args[i]; 365 } else if (args[i].equals("-initSyspars")) { 366 globals.config.setInitSyspars(true); 367 } 368 } 369 } 370 371 if (appName == null) { 372 error("Missing required argument -appname"); 373 throw new Exception("Invalid args"); 374 } 375 376 globals.init((DumpRestoreConfig)CalOptions.getProperty(appPrefix + appName)); 377 if (globals.config.getInitSyspars() || globals.config.getFrom2p3px()) { 378 globals.syspars = (BwSystem)CalOptions.getProperty("org.bedework.syspars"); 379 } 449 380 } 450 381 … … 477 408 478 409 try { 410 long startTime = System.currentTimeMillis(); 411 479 412 r = new Restore(); 413 414 r.getConfigProperties(args); 480 415 481 416 if (!r.processArgs(args)) { … … 491 426 r.stats(); 492 427 428 long millis = System.currentTimeMillis() - startTime; 429 long seconds = millis / 1000; 430 long minutes = seconds / 60; 431 seconds -= (minutes * 60); 432 433 r.info("Elapsed time: " + minutes + ":" + twoDigits(seconds)); 493 434 } catch (Throwable t) { 494 435 t.printStackTrace(); … … 501 442 } 502 443 } 444 445 private static String twoDigits(long val) { 446 if (val < 10) { 447 return "0" + val; 448 } 449 450 return String.valueOf(val); 451 } 503 452 } 504 trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/RestoreGlobals.java
r415 r463 56 56 import org.bedework.appcommon.TimeZonesParser; 57 57 import org.bedework.calfacade.BwAttendee; 58 import org.bedework.calfacade.BwEvent;59 import org.bedework.calfacade.BwEventAlarm;60 58 import org.bedework.calfacade.BwEventAnnotation; 61 import org.bedework.calfacade.BwEventObj;62 59 import org.bedework.calfacade.BwGroup; 63 60 import org.bedework.calfacade.BwCalendar; … … 67 64 import org.bedework.calfacade.BwSponsor; 68 65 import org.bedework.calfacade.BwSystem; 69 import org.bedework.calfacade.BwTimeZone;70 import org.bedework.calfacade.BwTodoAlarm;71 66 import org.bedework.calfacade.BwUser; 72 67 import org.bedework.calfacade.BwUserInfo; 73 import org.bedework.calfacade.filter.BwAndFilter;74 import org.bedework.calfacade.filter.BwCategoryFilter;75 import org.bedework.calfacade.filter.BwCreatorFilter;76 68 import org.bedework.calfacade.filter.BwFilter; 77 import org.bedework.calfacade.filter.BwLocationFilter;78 import org.bedework.calfacade.filter.BwNotFilter;79 import org.bedework.calfacade.filter.BwOrFilter;80 import org.bedework.calfacade.filter.BwSponsorFilter;81 69 import org.bedework.calfacade.ifs.CalTimezones; 82 70 import org.bedework.calfacade.svc.BwAdminGroup; 83 import org.bedework.calfacade.svc.BwAuthUser;84 import org.bedework.calfacade.svc.BwPreferences;85 71 import org.bedework.calfacade.svc.BwSubscription; 86 72 import org.bedework.calfacade.svc.BwView; 87 import org.bedework.dumprestore. BwDbLastmod;73 import org.bedework.dumprestore.DumpRestoreConfig; 88 74 89 75 import edu.rpi.cct.uwcal.access.Access; … … 92 78 93 79 import java.io.FileInputStream; 80 import java.util.ArrayList; 94 81 import java.util.Collection; 95 82 import java.util.HashMap; 96 83 import java.util.Iterator; 97 import java.util.Vector;98 84 99 85 /** Globals for the restore phase … … 103 89 */ 104 90 public class RestoreGlobals { 105 /** */ 106 public boolean debug; 91 /** Set false at start of entity, set true on entity error 92 */ 93 public boolean entityError; 94 95 /** Config properties from options file. 96 */ 97 public DumpRestoreConfig config; 107 98 108 99 /** Map user with id of zero on to this id - fixes oversight */ 109 100 public static int mapUser0 = 1; 110 101 111 /** */112 public boolean debugEntity;113 114 /** We can restore timezone info from this file115 */116 public String timezonesFilename;117 118 102 /** System parameters object */ 119 103 public BwSystem syspars = new BwSystem(); 120 104 121 /** show syspars.setHttpConnectionsPerUser was set */122 public boolean sysparsSetHttpConnectionsPerUser;123 /** show syspars.setHttpConnectionsPerHost was set */124 public boolean sysparsSetHttpConnectionsPerHost;125 /** show syspars.setHttpConnections was set */126 public boolean sysparsSetHttpConnections;127 /** show syspars.setDefaultUserQuota was set */128 public boolean sysparsSetDefaultUserQuota;129 130 105 /* Used when processing timezones */ 131 106 private CalTimezones tzcache; 132 107 133 /** True if we doing the conversion from 2.3.2 to V3 */134 public boolean from2p3px;135 136 /** When converting put all admin groups into the new group with this name */137 public String superGroupName;138 139 108 /** The super admin group */ 140 109 public BwGroup superGroup; … … 147 116 /** Even number of elements, old-name followd by new-name 148 117 */ 149 public Vector fixedCalendarNames = new Vector(); 150 151 /** If non-null we will set any events with no calendar to this one. 152 * This is mainly to fix errors in the data. All events should have a calendar. 153 */ 154 public String defaultPublicCalPath; 118 public ArrayList fixedCalendarNames = new ArrayList(); 119 155 120 /** */ 156 121 public BwCalendar defaultPublicCal; … … 172 137 * Any event which already has a calendar id turned up in two calendars. 173 138 */ 174 public Vector calLeaves = new Vector();139 public Collection calLeaves = new ArrayList(); 175 140 176 141 /** If true stop restore on any error, otherwise just flag it. … … 259 224 Integer key = new Integer(owner.getId()); 260 225 261 Vector v = (Vector)get(key);262 if ( v== null) {263 v = new Vector();264 put(key, v);265 } 266 267 v.add(new Integer(calid));226 ArrayList al = (ArrayList)get(key); 227 if (al == null) { 228 al = new ArrayList(); 229 put(key, al); 230 } 231 232 al.add(new Integer(calid)); 268 233 } 269 234 … … 275 240 Integer key = new Integer(owner.getId()); 276 241 277 Vector v = (Vector)get(key);278 if ( v== null) {279 v = new Vector();280 put(key, v);281 } 282 283 v.add(sub);242 ArrayList al = (ArrayList)get(key); 243 if (al == null) { 244 al = new ArrayList(); 245 put(key, al); 246 } 247 248 al.add(sub); 284 249 } 285 250 … … 290 255 */ 291 256 public Collection getCalendarids(BwUser owner) { 292 return ( Vector)get(new Integer(owner.getId()));257 return (Collection)get(new Integer(owner.getId())); 293 258 } 294 259 … … 298 263 */ 299 264 public Collection getSubs(BwUser owner) { 300 return ( Vector)get(new Integer(owner.getId()));265 return (Collection)get(new Integer(owner.getId())); 301 266 } 302 267 … … 323 288 return null; 324 289 } 290 291 /** 292 * @param owner 293 * @param name 294 * @return BwSubscription 295 */ 296 public BwSubscription getSub(BwUser owner, String name) { 297 Collection subs = getSubs(owner); 298 299 if (subs == null) { 300 return null; 301 } 302 303 Iterator it = subs.iterator(); 304 while (it.hasNext()) { 305 BwSubscription sub = (BwSubscription)it.next(); 306 if (sub.getName().equals(name)) { 307 return sub; 308 } 309 } 310 311 return null; 312 } 325 313 } 326 314 … … 335 323 Integer key = new Integer(keyid); 336 324 337 Vector v = (Vector)get(key);338 if ( v== null) {339 v = new Vector();340 put(key, v);341 } 342 343 v.add(new Integer(eventid));325 ArrayList al = (ArrayList)get(key); 326 if (al == null) { 327 al = new ArrayList(); 328 put(key, al); 329 } 330 331 al.add(new Integer(eventid)); 344 332 } 345 333 … … 349 337 */ 350 338 public Collection getEventids(int keyid) { 351 return ( Vector)get(new Integer(keyid));339 return (Collection)get(new Integer(keyid)); 352 340 } 353 341 } … … 433 421 /** 434 422 */ 423 public static class CalendarMap extends HashMap { 424 /** 425 * @param val 426 */ 427 public void put(BwCalendar val) { 428 put(val.getPath(), val); 429 } 430 431 /** 432 * @param path 433 * @return BwCalendar 434 */ 435 public BwCalendar get(String path) { 436 return (BwCalendar)get(path); 437 } 438 } 439 440 /** 441 */ 435 442 public static class CategoryMap extends HashMap { 436 443 /** … … 575 582 576 583 /** */ 577 public HashMap calendarsTbl = new HashMap();584 public CalendarMap calendarsTbl = new CalendarMap(); 578 585 579 586 /** Subscription we are currently restoring */ … … 585 592 /** Classes to stand in for 2.3.2 classes */ 586 593 public static class AliasFilter extends BwFilter { 587 }588 589 /** Link tag-name to calendar class. For every entity tag generated by the dump590 * there should be an entry in this table.591 */592 public static final HashMap classes = new HashMap();593 594 static {595 classes.put("aliasFilter", AliasFilter.class.getName());596 classes.put("andFilter", BwAndFilter.class.getName());597 classes.put("creatorFilter", BwCreatorFilter.class.getName());598 classes.put("keyFilter", BwCategoryFilter.class.getName());599 classes.put("locationFilter", BwLocationFilter.class.getName());600 classes.put("notFilter", BwNotFilter.class.getName());601 classes.put("orFilter", BwOrFilter.class.getName());602 classes.put("sponsorFilter", BwSponsorFilter.class.getName());603 604 classes.put("system", BwSystem.class.getName());605 classes.put("user", BwUser.class.getName());606 classes.put("timezone", BwTimeZone.class.getName());607 classes.put("calendar", BwCalendar.class.getName());608 classes.put("location", BwLocation.class.getName());609 classes.put("sponsor", BwSponsor.class.getName());610 classes.put("organizer", BwOrganizer.class.getName());611 classes.put("attendee", BwAttendee.class.getName());612 classes.put("event-alarm", BwEventAlarm.class.getName());613 classes.put("todo-alarm", BwTodoAlarm.class.getName());614 classes.put("keyword", BwCategory.class.getName());615 classes.put("category", BwCategory.class.getName());616 classes.put("authuser", BwAuthUser.class.getName());617 classes.put("event", BwEventObj.class.getName());618 classes.put("adminGroup", BwAdminGroup.class.getName());619 classes.put("user-prefs", BwPreferences.class.getName());620 classes.put("dblastmod", BwDbLastmod.class.getName());621 622 /* 2.3.2 */623 classes.put("eventRef", BwEvent.class.getName());624 594 } 625 595 … … 644 614 } 645 615 646 tzcache = new TimezonesImpl( debug, getPublicUser(), rintf);616 tzcache = new TimezonesImpl(config.getDebug(), getPublicUser(), rintf); 647 617 tzcache.setDefaultTimeZoneId(syspars.getTzid()); 648 618 649 if ( from2p3px && (timezonesFilename!= null)) {619 if (config.getFrom2p3px() && (config.getTimezonesFilename() != null)) { 650 620 // Populate from a file 651 621 TimeZonesParser tzp = new TimeZonesParser( 652 new FileInputStream( timezonesFilename),653 debug);622 new FileInputStream(config.getTimezonesFilename()), 623 config.getDebug()); 654 624 655 625 Collection tzis = tzp.getTimeZones(); … … 716 686 } 717 687 718 if ( superGroupName== null) {688 if (config.getSuperGroupName() == null) { 719 689 throw new Exception("superGroupName must be defined"); 720 690 } 721 691 722 692 // Create it 723 BwAdminGroup sg = new BwAdminGroup( superGroupName);693 BwAdminGroup sg = new BwAdminGroup(config.getSuperGroupName()); 724 694 sg.setGroupOwner(getPublicUser()); 725 695 sg.setOwner(getPublicUser()); … … 736 706 if (defaultPublicAccess == null) { 737 707 try { 738 Access a = new Access( debug);708 Access a = new Access(config.getDebug()); 739 709 defaultPublicAccess = a.getDefaultPublicAccess(); 740 710 defaultPersonalAccess = a.getDefaultPublicAccess(); … … 768 738 */ 769 739 public String getDefaultPublicCalendarsAccess() throws Throwable { 770 Acl acl = new Acl( debug);740 Acl acl = new Acl(config.getDebug()); 771 741 772 742 /** all owner, read others, read unauthenticated, (read,writeContent) group=superGroup */ … … 776 746 acl.addAce(new Ace(null, false, Ace.whoTypeUnauthenticated, Access.read)); 777 747 778 Ace rwcont = new Ace( getSuperGroup().getAccount(), false,748 Ace rwcont = new Ace(config.getSuperGroupName(), false, 779 749 Ace.whoTypeGroup, Access.writeContent); 780 750 rwcont.addPriv(Access.read); … … 818 788 } 819 789 } 790 791 /** 792 * @param config 793 */ 794 public void init(DumpRestoreConfig config) { 795 this.config = config; 796 } 820 797 } trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/RestoreIntf.java
r50 r463 54 54 package org.bedework.dumprestore.restore; 55 55 56 import org.bedework.calfacade.BwAttendee; 56 57 import org.bedework.calfacade.BwAlarm; 57 58 import org.bedework.calfacade.BwCalendar; … … 80 81 public interface RestoreIntf { 81 82 /** 82 * @param url83 * @param className84 * @param id85 * @param pw86 83 * @param globals 87 84 * @throws Throwable 88 85 */ 89 public void init(String url,90 String className,91 String id,92 String pw,93 RestoreGlobals globals) throws Throwable;94 95 /**96 * @param globals97 * @throws Throwable98 */99 86 public void init(RestoreGlobals globals) throws Throwable; 100 87 … … 105 92 public void open() throws Throwable; 106 93 94 /** Call to start a transaction 95 * 96 * @throws Throwable 97 */ 98 public void startTransaction() throws Throwable; 99 100 /** Call to end a transaction 101 * 102 * @throws Throwable 103 */ 104 public void endTransaction() throws Throwable; 105 107 106 /** Call at end of restoring to finish up. Will restore any cached values. 108 107 * … … 124 123 */ 125 124 public void restoreUser(BwUser o) throws Throwable; 125 126 /** Restore attendee 127 * 128 * @param o 129 * @throws Throwable 130 */ 131 public void restoreAttendee(BwAttendee o) throws Throwable; 126 132 127 133 /** Restore user info … … 243 249 public int fixUserEventsCal(BwUser u, BwCalendar cal) throws Throwable; 244 250 251 /** 2.3 only 252 * @param val 253 * @throws Throwable 254 */ 255 public void restoreCalendars(BwCalendar val) throws Throwable; 256 245 257 /** 258 * @param path 259 * @return BwCalendar 260 * @throws Throwable 261 */ 262 public BwCalendar getCalendar(String path) throws Throwable; 263 264 /** Save a single root calendar - no parent is set in the entity 265 * 246 266 * @param val 247 267 * @throws Throwable 248 268 */ 249 public void restoreCalendars(BwCalendar val) throws Throwable;250 251 /** Restore a single calendar 269 public void saveRootCalendar(BwCalendar val) throws Throwable; 270 271 /** Restore a single calendar - parent is set in the entity 252 272 * 253 273 * @param val 254 274 * @throws Throwable 255 275 */ 256 public void restoreCalendar(BwCalendar val) throws Throwable;276 public void addCalendar(BwCalendar val) throws Throwable; 257 277 } 258 278 trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/TimezonesImpl.java
r278 r463 158 158 } 159 159 */ 160 if (tzinfo == null) { 161 return null; 162 } 160 163 161 164 return tzinfo.getTz(); … … 199 202 lookup("not-a-timezone"); 200 203 } 201 204 202 205 /* ==================================================================== 203 206 * Private methods trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/rules/AdminGroupRule.java
r260 r463 90 90 } 91 91 92 if (globals. from2p3px) {92 if (globals.config.getFrom2p3px()) { 93 93 globals.getSuperGroup().addGroupMember(entity); 94 94 } trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/rules/AuthUserRule.java
r49 r463 78 78 globals.rintf.restoreAuthUser(au); 79 79 80 if (globals. from2p3px&& (globals.userInfo != null)) {80 if (globals.config.getFrom2p3px() && (globals.userInfo != null)) { 81 81 globals.userInfo.setUser(au.getUser()); 82 82 globals.rintf.restoreUserInfo(globals.userInfo); trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/rules/CalendarRule.java
r54 r463 78 78 try { 79 79 if (globals.rintf != null) { 80 globals.rintf.restoreCalendar(entity); 80 /* If the parent is null then this should be one of the root calendars, 81 */ 82 BwCalendar parent = entity.getCalendar(); 83 if (parent == null) { 84 // Ensure root 85 globals.rintf.saveRootCalendar(entity); 86 } else { 87 globals.rintf.addCalendar(entity); 88 } 81 89 } 82 globals.calendarsTbl.put(new Integer(entity.getId()), entity);83 90 } catch (Throwable t) { 84 91 throw new Exception(t); trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/rules/EntityFieldRule.java
r415 r463 175 175 176 176 if (name.equals("calendar")) { 177 entity.setCalendar(calendarFld()); 177 String path = stringFld(); 178 179 if ((path != null) && (path.length() > 0)) { 180 entity.setCalendar(calendarFld()); 181 } // Otherwise assume root calendar 178 182 return true; 179 183 } … … 228 232 229 233 if (name.equals("seq")) { 230 entity.setSeq(intFld()); 234 // Don't restore version number. 235 //entity.setSeq(intFld()); 231 236 return true; 232 237 } … … 377 382 return dtim; 378 383 } catch (Throwable t) { 384 if (t instanceof Exception) { 385 throw (Exception)t; 386 } 379 387 throw new Exception(t); 380 388 } … … 405 413 } 406 414 407 int id = Integer.parseInt(fldval); 408 409 return (BwCalendar)globals.calendarsTbl.get(new Integer(id)); 415 try { 416 return globals.rintf.getCalendar(fldval); 417 } catch (Throwable t) { 418 if (t instanceof Exception) { 419 throw (Exception)t; 420 } 421 throw new Exception(t); 422 } 410 423 } 411 424 trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/rules/EntityRule.java
r75 r463 54 54 package org.bedework.dumprestore.restore.rules; 55 55 56 import org.bedework.calfacade.BwAttendee; 57 import org.bedework.calfacade.BwCalendar; 58 import org.bedework.calfacade.BwCategory; 59 import org.bedework.calfacade.BwEvent; 60 import org.bedework.calfacade.BwEventAlarm; 61 import org.bedework.calfacade.BwEventAnnotation; 62 import org.bedework.calfacade.BwEventObj; 63 import org.bedework.calfacade.BwLocation; 64 import org.bedework.calfacade.BwOrganizer; 65 import org.bedework.calfacade.BwSponsor; 66 import org.bedework.calfacade.BwSystem; 67 import org.bedework.calfacade.BwTimeZone; 68 import org.bedework.calfacade.BwTodoAlarm; 69 import org.bedework.calfacade.BwUser; 56 70 import org.bedework.calfacade.base.BwShareableDbentity; 71 import org.bedework.calfacade.filter.BwAndFilter; 72 import org.bedework.calfacade.filter.BwCategoryFilter; 73 import org.bedework.calfacade.filter.BwCreatorFilter; 74 import org.bedework.calfacade.filter.BwLocationFilter; 75 import org.bedework.calfacade.filter.BwNotFilter; 76 import org.bedework.calfacade.filter.BwOrFilter; 77 import org.bedework.calfacade.filter.BwSponsorFilter; 78 import org.bedework.calfacade.svc.BwAdminGroup; 79 import org.bedework.calfacade.svc.BwAuthUser; 80 import org.bedework.calfacade.svc.BwPreferences; 81 import org.bedework.dumprestore.BwDbLastmod; 57 82 import org.bedework.dumprestore.restore.RestoreGlobals; 83 import org.bedework.dumprestore.restore.RestoreGlobals.AliasFilter; 84 85 import java.util.HashMap; 58 86 59 87 import org.xml.sax.Attributes; … … 64 92 */ 65 93 public class EntityRule extends RestoreRule { 94 95 /** Link tag-name to calendar class. For every entity tag generated by the dump 96 * there should be an entry in this table. 97 */ 98 public static final HashMap classes = new HashMap(); 99 100 static { 101 classes.put("aliasFilter", AliasFilter.class.getName()); 102 classes.put("andFilter", BwAndFilter.class.getName()); 103 classes.put("creatorFilter", BwCreatorFilter.class.getName()); 104 classes.put("keyFilter", BwCategoryFilter.class.getName()); 105 classes.put("locationFilter", BwLocationFilter.class.getName()); 106 classes.put("notFilter", BwNotFilter.class.getName()); 107 classes.put("orFilter", BwOrFilter.class.getName()); 108 classes.put("sponsorFilter", BwSponsorFilter.class.getName()); 109 110 classes.put("system", BwSystem.class.getName()); 111 classes.put("user", BwUser.class.getName()); 112 classes.put("timezone", BwTimeZone.class.getName()); 113 classes.put("calendar", BwCalendar.class.getName()); 114 classes.put("location", BwLocation.class.getName()); 115 classes.put("sponsor", BwSponsor.class.getName()); 116 classes.put("organizer", BwOrganizer.class.getName()); 117 classes.put("attendee", BwAttendee.class.getName()); 118 classes.put("event-alarm", BwEventAlarm.class.getName()); 119 classes.put("todo-alarm", BwTodoAlarm.class.getName()); 120 classes.put("keyword", BwCategory.class.getName()); 121 classes.put("category", BwCategory.class.getName()); 122 classes.put("authuser", BwAuthUser.class.getName()); 123 classes.put("event", BwEventObj.class.getName()); 124 classes.put("event-annotation", BwEventAnnotation.class.getName()); 125 classes.put("adminGroup", BwAdminGroup.class.getName()); 126 classes.put("user-prefs", BwPreferences.class.getName()); 127 classes.put("dblastmod", BwDbLastmod.class.getName()); 128 129 /* 2.3.2 */ 130 classes.put("eventRef", BwEvent.class.getName()); 131 } 132 66 133 EntityRule(RestoreGlobals globals) { 67 134 super(globals); … … 69 136 70 137 public void begin(String ns, String name, Attributes att) { 71 if (globals.debugEntity) { 138 globals.entityError = false; 139 140 if (globals.config.getDebugEntity()) { 72 141 trace("About to push entity for " + name); 73 142 } 74 143 75 String className = (String) RestoreGlobals.classes.get(name);144 String className = (String)classes.get(name); 76 145 77 146 if (className == null) { … … 90 159 91 160 o = c.newInstance(); 161 162 push(o); 163 164 if (globals.rintf != null) { 165 globals.rintf.startTransaction(); 166 } 92 167 } catch (ClassNotFoundException e) { 93 168 throw new RuntimeException("Class " + className + " not found"); … … 95 170 throw new RuntimeException(t); 96 171 } 97 98 push(o);99 172 } 100 173 trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/rules/EventFieldRule.java
r246 r463 77 77 } 78 78 79 /* pre-hibernate fields */ 80 if (name.equals("lastmod")) { // pre-hibernate 81 e.setLastmod(isoDateTimeFld()); 82 } else if (name.equals("created")) { // pre-hibernate 83 e.setCreated(isoDateTimeFld()); 84 e.setDtstamp(isoDateTimeFld()); 85 } else if (name.equals("longdesc")) { // pre-hibernate 86 e.setDescription(stringFld()); 87 } else if (name.equals("startdate")) { // pre-hibernate 88 e.setDtstart(dateFld()); 89 } else if (name.equals("starttime")) { // pre-hibernate 90 makeDateTimeFld(e.getDtstart()); 91 } else if (name.equals("enddate")) { // pre-hibernate 92 e.setEndType(BwEvent.endTypeDate); 93 e.setDtend(dateFld()); 94 } else if (name.equals("endtime")) { // pre-hibernate 95 makeDateTimeFld(e.getDtend()); 96 } else if (name.equals("shortdesc")) { // pre-hibernate 97 e.setSummary(stringFld()); 98 } else if (name.equals("keyword")) { // pre-hibernate 99 //globals.eventKeysTbl.put(intFld(), e.getId()); 100 BwCategory cat = categoryFld(); 101 e.addCategory(cat); 102 BwCalendar cal = globals.catCalTbl.get(cat.getId()); 103 if (cal == null) { 104 error("No mapping for category " + cat + " for event " + e); 79 try { 80 /* pre-hibernate fields */ 81 if (name.equals("lastmod")) { // pre-hibernate 82 e.setLastmod(isoDateTimeFld()); 83 } else if (name.equals("created")) { // pre-hibernate 84 e.setCreated(isoDateTimeFld()); 85 e.setDtstamp(isoDateTimeFld()); 86 } else if (name.equals("longdesc")) { // pre-hibernate 87 e.setDescription(stringFld()); 88 } else if (name.equals("startdate")) { // pre-hibernate 89 e.setDtstart(dateFld()); 90 } else if (name.equals("starttime")) { // pre-hibernate 91 makeDateTimeFld(e.getDtstart()); 92 } else if (name.equals("enddate")) { // pre-hibernate 93 e.setEndType(BwEvent.endTypeDate); 94 e.setDtend(dateFld()); 95 } else if (name.equals("endtime")) { // pre-hibernate 96 makeDateTimeFld(e.getDtend()); 97 } else if (name.equals("shortdesc")) { // pre-hibernate 98 e.setSummary(stringFld()); 99 } else if (name.equals("keyword")) { // pre-hibernate 100 //globals.eventKeysTbl.put(intFld(), e.getId()); 101 BwCategory cat = categoryFld(); 102 e.addCategory(cat); 103 BwCalendar cal = globals.catCalTbl.get(cat.getId()); 104 if (cal == null) { 105 error("No mapping for category " + cat + " for event " + e); 106 } else { 107 e.setCalendar(cal); 108 } 109 } else if (name.equals("eventKeywords")) { // pre-hibernate 110 // Nothing to do. 111 112 } else if (name.equals("target-calendar")) { 113 BwEvent target = getAnnotationTarget(e); 114 115 // target.setCalendar() 116 } else if (name.equals("name")) { 117 e.setName(stringFld()); 118 } else if (name.equals("guid")) { 119 e.setGuid(stringFld()); 120 } else if (name.equals("summary")) { 121 e.setSummary(stringFld()); 122 } else if (name.equals("description")) { 123 e.setDescription(stringFld()); 124 125 /* Start */ 126 } else if (name.equals("start-date-type")) { 127 dateType = booleanFld(); 128 tzid = null; 129 } else if (name.equals("start-tzid")) { 130 tzid = stringFld(); 131 } else if (name.equals("start-dtval")) { 132 dtVal = fixedDateTimeFld(); 133 } else if (name.equals("start-date")) { 134 // Could compare given UTC time 135 e.setDtstart(dateTimeFld()); 136 137 /* end */ 138 } else if (name.equals("end-date-type")) { 139 dateType = booleanFld(); 140 tzid = null; 141 } else if (name.equals("end-tzid")) { 142 tzid = stringFld(); 143 } else if (name.equals("end-dtval")) { 144 dtVal = fixedDateTimeFld(); 145 } else if (name.equals("end-date")) { 146 // Could compare given UTC time 147 e.setDtend(dateTimeFld()); 148 149 } else if (name.equals("duration")) { 150 e.setDuration(stringFld()); 151 } else if (name.equals("end-type")) { 152 e.setEndType(charFld()); 153 154 } else if (name.equals("link")) { 155 e.setLink(stringFld()); 156 } else if (name.equals("status")) { 157 String status = stringFld(); 158 if ((status != null) && 159 (!status.equals("F"))) { // 2.3 160 e.setStatus(status); 161 } 162 } else if (name.equals("cost")) { 163 e.setCost(stringFld()); 164 } else if (name.equals("deleted")) { 165 e.setDeleted(booleanFld()); 166 167 } else if (name.equals("dtstamp")) { 168 e.setDtstamp(stringFld()); 169 } else if (name.equals("last-mod")) { 170 e.setLastmod(stringFld()); 171 } else if (name.equals("create-date")) { 172 e.setCreated(stringFld()); 173 174 } else if (name.equals("priority")) { 175 e.setPriority(intFld()); 176 } else if (name.equals("sequence")) { 177 e.setSequence(intFld()); 178 179 } else if (name.equals("eventCategories")) { 180 // Nothing to do. 181 } else if (name.equals("category")) { 182 globals.eventKeysTbl.put(intFld(), e.getId()); 183 e.addCategory(categoryFld()); 184 185 } else if (name.equals("sponsor")) { 186 e.setSponsor(sponsorFld()); 187 } else if (name.equals("location")) { 188 e.setLocation(locationFld()); 189 } else if (name.equals("organizer")) { 190 e.setOrganizer(organizerFld()); 191 192 } else if (name.equals("transparency")) { 193 e.setTransparency(stringFld()); 194 195 } else if (name.equals("eventAttendees")) { 196 // Nothing to do. 197 } else if (name.equals("attendee")) { 198 throw new Exception("Unimplemented - attendee"); 199 200 } else if (name.equals("recurring")) { 201 e.setRecurring(booleanFld()); 202 } else if (name.equals("eventRecurrence")) { 203 // Nothing to do. 204 } else if (name.equals("rrule")) { 205 e.getRecurrence().addRrule(stringFld()); 206 } else if (name.equals("exrule")) { 207 e.getRecurrence().addExrule(stringFld()); 208 209 /* rdate */ 210 } else if (name.equals("rdate-date-type")) { 211 dateType = booleanFld(); 212 tzid = null; 213 } else if (name.equals("rdate-tzid")) { 214 tzid = stringFld(); 215 } else if (name.equals("rdate-dtval")) { 216 dtVal = stringFld(); 217 } else if (name.equals("rdate-date")) { 218 // Could compare given UTC time 219 e.getRecurrence().addRdate(dateTimeFld()); 220 221 /* exdate */ 222 } else if (name.equals("exdate-date-type")) { 223 dateType = booleanFld(); 224 tzid = null; 225 } else if (name.equals("exdate-tzid")) { 226 tzid = stringFld(); 227 } else if (name.equals("exdate-dtval")) { 228 dtVal = stringFld(); 229 } else if (name.equals("exdate-date")) { 230 // Could compare given UTC time 231 e.getRecurrence().addExdate(dateTimeFld()); 232 233 } else if (name.equals("recurrenceId")) { 234 e.setRecurrenceId(stringFld()); 235 } else if (name.equals("latestDate")) { 236 e.getRecurrence().setLatestDate(stringFld()); 105 237 } else { 106 e.setCalendar(cal);238 unknownTag(name); 107 239 } 108 } else if (name.equals("eventKeywords")) { // pre-hibernate 109 // Nothing to do. 110 111 } else if (name.equals("target")) { 112 /* FIXME - this is wrong */ 113 // Create a dummy target 114 BwEvent target = new BwEventObj(); 115 116 target.setId(intFld()); 117 ((BwEventAnnotation)e).setTarget(target); 118 119 } else if (name.equals("name")) { 120 e.setName(stringFld()); 121 } else if (name.equals("guid")) { 122 e.setGuid(stringFld()); 123 } else if (name.equals("summary")) { 124 e.setSummary(stringFld()); 125 } else if (name.equals("description")) { 126 e.setDescription(stringFld()); 127 128 /* Start */ 129 } else if (name.equals("start-date-type")) { 130 dateType = booleanFld(); 131 tzid = null; 132 } else if (name.equals("start-tzid")) { 133 tzid = stringFld(); 134 } else if (name.equals("start-dtval")) { 135 dtVal = fixedDateTimeFld(); 136 } else if (name.equals("start-date")) { 137 // Could compare given UTC time 138 e.setDtstart(dateTimeFld()); 139 140 /* end */ 141 } else if (name.equals("end-date-type")) { 142 dateType = booleanFld(); 143 tzid = null; 144 } else if (name.equals("end-tzid")) { 145 tzid = stringFld(); 146 } else if (name.equals("end-dtval")) { 147 dtVal = fixedDateTimeFld(); 148 } else if (name.equals("end-date")) { 149 // Could compare given UTC time 150 e.setDtend(dateTimeFld()); 151 152 } else if (name.equals("duration")) { 153 e.setDuration(stringFld()); 154 } else if (name.equals("end-type")) { 155 e.setEndType(charFld()); 156 157 } else if (name.equals("link")) { 158 e.setLink(stringFld()); 159 } else if (name.equals("status")) { 160 String status = stringFld(); 161 if ((status != null) && 162 (!status.equals("F"))) { // 2.3 163 e.setStatus(status); 164 } 165 } else if (name.equals("cost")) { 166 e.setCost(stringFld()); 167 } else if (name.equals("deleted")) { 168 e.setDeleted(booleanFld()); 169 170 } else if (name.equals("dtstamp")) { 171 e.setDtstamp(stringFld()); 172 } else if (name.equals("last-mod")) { 173 e.setLastmod(stringFld()); 174 } else if (name.equals("create-date")) { 175 e.setCreated(stringFld()); 176 177 } else if (name.equals("priority")) { 178 e.setPriority(intFld()); 179 } else if (name.equals("sequence")) { 180 e.setSequence(intFld()); 181 182 } else if (name.equals("eventCategories")) { 183 // Nothing to do. 184 } else if (name.equals("category")) { 185 globals.eventKeysTbl.put(intFld(), e.getId()); 186 e.addCategory(categoryFld()); 187 188 } else if (name.equals("sponsor")) { 189 e.setSponsor(sponsorFld()); 190 } else if (name.equals("location")) { 191 e.setLocation(locationFld()); 192 } else if (name.equals("organizer")) { 193 e.setOrganizer(organizerFld()); 194 195 } else if (name.equals("transparency")) { 196 e.setTransparency(stringFld()); 197 198 } else if (name.equals("eventAttendees")) { 199 // Nothing to do. 200 } else if (name.equals("attendee")) { 201 throw new Exception("Unimplemented - attendee"); 202 203 } else if (name.equals("recurring")) { 204 e.setRecurring(booleanFld()); 205 } else if (name.equals("eventRecurrence")) { 206 // Nothing to do. 207 } else if (name.equals("rrule")) { 208 e.getRecurrence().addRrule(stringFld()); 209 } else if (name.equals("exrule")) { 210 e.getRecurrence().addExrule(stringFld()); 211 212 /* rdate */ 213 } else if (name.equals("rdate-date-type")) { 214 dateType = booleanFld(); 215 tzid = null; 216 } else if (name.equals("rdate-tzid")) { 217 tzid = stringFld(); 218 } else if (name.equals("rdate-dtval")) { 219 dtVal = stringFld(); 220 } else if (name.equals("rdate-date")) { 221 // Could compare given UTC time 222 e.getRecurrence().addRdate(dateTimeFld()); 223 224 /* exdate */ 225 } else if (name.equals("exdate-date-type")) { 226 dateType = booleanFld(); 227 tzid = null; 228 } else if (name.equals("exdate-tzid")) { 229 tzid = stringFld(); 230 } else if (name.equals("exdate-dtval")) { 231 dtVal = stringFld(); 232 } else if (name.equals("exdate-date")) { 233 // Could compare given UTC time 234 e.getRecurrence().addExdate(dateTimeFld()); 235 236 } else if (name.equals("recurrenceId")) { 237 e.setRecurrenceId(stringFld()); 238 } else if (name.equals("latestDate")) { 239 e.getRecurrence().setLatestDate(stringFld()); 240 } else { 241 unknownTag(name); 242 } 240 } catch (Exception ex) { 241 error("Error processing event id " + e.getId(), ex); 242 globals.entityError = true; 243 } 244 } 245 246 private BwEvent getAnnotationTarget(BwEvent e) { 247 BwEventAnnotation ann = (BwEventAnnotation)e; 248 BwEvent target = ann.getTarget(); 249 250 if (target == null) { 251 target = new BwEventObj(); 252 } 253 254 ann.setTarget(target); 255 return target; 256 } 257 258 private BwEvent getAnnotationMaster(BwEvent e) { 259 BwEventAnnotation ann = (BwEventAnnotation)e; 260 BwEvent master = ann.getMaster(); 261 262 if (master == null) { 263 master = new BwEventObj(); 264 } 265 266 ann.setMaster(master); 267 return master; 243 268 } 244 269 } trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/rules/EventRule.java
r235 r463 90 90 BwEvent entity = (BwEvent)top(); 91 91 92 if (globals.entityError) { 93 warn("Not restoring event because of previous error"); 94 warn(entity.toString()); 95 return; 96 } 97 92 98 globals.events++; 93 99 94 if (globals. debug) {100 if (globals.config.getDebug()) { 95 101 trace("Restore event # " + globals.events); 96 102 } … … 98 104 fixSharableEntity(entity, "Event"); 99 105 100 /* If it's an alias, save an entry in the alia table then remove the dummy target.106 /* If it's an alias, save an entry in the alias table then remove the dummy target. 101 107 * We'll update them all at the end 102 108 */ … … 107 113 108 114 try { 109 if (globals. from2p3px) {115 if (globals.config.getFrom2p3px()) { 110 116 if ((entity.getGuid() == null) || (entity.getGuid().length() == 0)) { 111 117 if (globals.syspars.getSystemid() == null) { … … 122 128 String guid = guidPrefix + globals.syspars.getSystemid(); 123 129 124 if (globals. debug) {130 if (globals.config.getDebug()) { 125 131 // trace("Set guid for " + entity.getId() + " to " + guid); 126 132 } trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/rules/FilterRule.java
r415 r463 86 86 87 87 try { 88 if (globals. from2p3px) {88 if (globals.config.getFrom2p3px()) { 89 89 /* We are converting filter definitions into calendar definitions. 90 90 */ … … 108 108 globals.calLeaves.add(entity); 109 109 globals.catCalTbl.put(catf.getCategory().getId(), cal); 110 if (globals. debug) {110 if (globals.config.getDebug()) { 111 111 trace("Save calendar with id " + cal.getId()); 112 112 } … … 153 153 globals.nextCalKey++; 154 154 155 globals.calendarsTbl.put(new Integer(cal.getId()), cal);156 157 155 if (entity.getParent() != null) { 156 // We set the path further up 158 157 BwCalendar parent = (BwCalendar)globals.filterToCal.get( 159 158 new Integer(entity.getParent().getId())); … … 165 164 cal.setCalendar(parent); 166 165 cal.setPath(parent.getPath() + "/" + cal.getName()); 167 if (cal.getPath().equals(globals. defaultPublicCalPath)) {166 if (cal.getPath().equals(globals.config.getDefaultPublicCalPath())) { 168 167 globals.defaultPublicCal = cal; 169 168 } … … 172 171 } 173 172 173 globals.calendarsTbl.put(cal); 174 174 175 globals.filterToCal.put(new Integer(entity.getId()), cal); 175 176 } … … 177 178 entity.setOwner(globals.getPublicUser()); 178 179 entity.setPublick(true); 179 } 180 } // 2.3 180 181 181 182 if (globals.rintf != null) { trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/rules/FiltersRule.java
r59 r463 80 80 */ 81 81 public void end(String ns, String name) throws Exception { 82 if (!globals. from2p3px) {82 if (!globals.config.getFrom2p3px()) { 83 83 // Not converting 84 84 return; … … 146 146 ucal.addChild(cal); 147 147 148 globals.calendarsTbl.put( new Integer(cal.getId()),cal);148 globals.calendarsTbl.put(cal); 149 149 150 150 globals.defaultCalendars.put(new Integer(u.getId()), cal); trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/rules/RestoreRule.java
r49 r463 96 96 } 97 97 98 protected void error(String msg, Throwable t) { 99 getLog().error(msg, t); 100 } 101 98 102 protected void warn(String msg) { 99 103 getLog().warn(msg); trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/rules/RestoreRuleSet.java
r50 r463 98 98 d.addRule("caldata/organizers/organizer/*", new OrganizerFieldRule(globals)); 99 99 100 d.addRule("caldata/attendees/attendee", new AttendeeRule(globals)); 101 d.addRule("caldata/attendees/attendee/*", new AttendeeFieldRule(globals)); 102 100 103 /* 2.3.2 101 104 d.addRule("caldata/dblastmods/dblastmod", new DbLastmodRule(globals)); … … 131 134 d.addRule("caldata/events/event/*", efr); 132 135 136 d.addRule("caldata/event-annotations/event-annotation", new EventRule(globals)); 137 d.addRule("caldata/event-annotations/event-annotation/*", efr); 138 133 139 AlarmRule alr = new AlarmRule(globals); 134 140 AlarmFieldRule alfr = new AlarmFieldRule(globals); trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/rules/SysparsFieldRule.java
r64 r463 102 102 } else if (name.equals("httpConnectionsPerUser")) { 103 103 ent.setHttpConnectionsPerUser(parval(globals.syspars.getHttpConnectionsPerUser(), 104 globals.sysparsSetHttpConnectionsPerUser,105 104 intFld())); 106 105 } else if (name.equals("httpConnectionsPerHost")) { 107 106 ent.setHttpConnectionsPerHost(parval(globals.syspars.getHttpConnectionsPerHost(), 108 globals.sysparsSetHttpConnectionsPerHost,109 107 intFld())); 110 108 } else if (name.equals("httpConnections")) { 111 109 ent.setHttpConnections(parval(globals.syspars.getHttpConnections(), 112 globals.sysparsSetHttpConnections,113 110 intFld())); 114 111 … … 120 117 ent.setMaxUserEntitySize(intFld()); 121 118 } else if (name.equals("defaultUserQuota")) { 122 if (globals.sysparsSetDefaultUserQuota) { 123 ent.setDefaultUserQuota(globals.syspars.getDefaultUserQuota()); 124 } else { 125 ent.setDefaultUserQuota(longFld()); 126 } 119 ent.setDefaultUserQuota(parval(globals.syspars.getDefaultUserQuota(), 120 longFld())); 127 121 128 122 } else if (name.equals("userauthClass")) { … … 139 133 } 140 134 141 private int parval(int sysparVal, boolean isSet, int val) { 142 if (isSet) { 135 private int parval(int sysparVal, int val) { 136 if (sysparVal != 0) { 137 return sysparVal; 138 } 139 140 return val; 141 } 142 143 private long parval(long sysparVal, long val) { 144 if (sysparVal != 0) { 143 145 return sysparVal; 144 146 } trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/rules/UserPrefsFieldRule.java
r239 r463 78 78 if (name.equals("email")) { 79 79 p.setEmail(stringFld()); 80 } else if (name.equals("default -calendar")) {80 } else if (name.equals("defaultCalendar")) { 81 81 p.setDefaultCalendar(calendarFld()); 82 82 } else if (name.equals("skinName")) { … … 94 94 } else if (name.equals("workdayEnd")) { 95 95 p.setWorkdayEnd(intFld()); 96 } else if (name.equals("preferredEndType")) { 97 p.setPreferredEndType(stringFld()); 98 } else if (name.equals("userMode")) { 99 p.setUserMode(intFld()); 96 100 97 101 // subscription fields … … 110 114 } else if (name.equals("sub-owner")) { 111 115 BwUser sowner = userFld(); 112 116 113 117 if (!p.getOwner().equals(sowner)) { 114 118 error("Subscription owners don't match for " + globals.curSub); … … 120 124 } else if (name.equals("sub-affectsFreeBusy")) { 121 125 globals.curSub.setAffectsFreeBusy(booleanFld()); 126 } else if (name.equals("sub-ignoreTransparency")) { 127 globals.curSub.setIgnoreTransparency(booleanFld()); 122 128 } else if (name.equals("sub-display")) { 123 129 globals.curSub.setDisplay(booleanFld()); … … 147 153 } else if (name.equals("view-owner")) { 148 154 BwUser vowner = userFld(); 149 155 150 156 if (!p.getOwner().equals(vowner)) { 151 157 error("View owners don't match for " + globals.curView); … … 155 161 } else if (name.equals("view-subscriptions")) { 156 162 } else if (name.equals("view-sub-id")) { 163 // pre 3.1 157 164 BwSubscription sub = globals.subscriptionsTbl.getSub(p.getOwner(), intFld()); 158 165 … … 163 170 globals.curView.addSubscription(sub); 164 171 } 172 } else if (name.equals("view-sub-name")) { 173 BwSubscription sub = globals.subscriptionsTbl.getSub(p.getOwner(), stringFld()); 174 175 if (sub == null) { 176 error(" Missing subscription " + stringFld() + " for view " + 177 globals.curView); 178 } else { 179 globals.curView.addSubscription(sub); 180 } 165 181 } 166 182 } trunk/calendar3/dumprestore/src/org/bedework/dumprestore/restore/rules/UserRule.java
r54 r463 74 74 globals.users++; 75 75 76 if (globals. from2p3px) {76 if (globals.config.getFrom2p3px()) { 77 77 entity.setCategoryAccess(globals.getDefaultPersonalAccess()); 78 78 entity.setLocationAccess(globals.getDefaultPersonalAccess()); trunk/calendar3/test/src/org/bedework/tests/calsvc/CalSvcAlarmsTest.java
r48 r463 151 151 int twoAttendeeAlarm = alarm.getId(); 152 152 153 alarm.addAttendee(new BwAttendee(null, null, null, null, 153 alarm.addAttendee(new BwAttendee(alarm.getOwner(), alarm.getPublick(), 154 null, null, null, null, 154 155 null, null, null, true, 155 156 null, null, "someone@rpi.edu", … … 228 229 int twoAttendeeAlarm = alarm.getId(); 229 230 230 alarm.addAttendee(new BwAttendee(null, null, null, null, 231 alarm.addAttendee(new BwAttendee(alarm.getOwner(), alarm.getPublick(), 232 null, null, null, null, 231 233 null, null, null, true, 232 234 null, null, "someone@rpi.edu", … … 261 263 262 264 private BwEventAlarm makeAlarm(String user, int mins) { 263 BwEventAlarm alarm = BwEventAlarm.emailAlarm(ev, new BwUser(user), 265 BwUser u = new BwUser(user); 266 BwEventAlarm alarm = BwEventAlarm.emailAlarm(ev, u, 264 267 "-PT" + mins + "M", true, true, 265 268 "PT5M", 1, … … 268 271 "Summary for alarm", 269 272 null); //attendees 270 BwAttendee att = new BwAttendee( null, null, null, null,273 BwAttendee att = new BwAttendee(u, false, null, null, null, null, 271 274 null, null, null, true, 272 275 null, null, "someone@rpi.edu",
