First android unit test
authorkenstir <kenstir@gmail.com>
Sun, 6 Dec 2015 01:24:47 +0000 (20:24 -0500)
committerkenstir <kenstir@gmail.com>
Sun, 6 Dec 2015 01:24:47 +0000 (20:24 -0500)
Under Intellij you need a new android test module, and it would not create one under core/ so it went under cwmars_app/tests/.  The first test exercises volley to fetch a json resource.

13 files changed:
Open-ILS/src/Android/core/.idea/copyright/profiles_settings.xml
Open-ILS/src/Android/core/.idea/encodings.xml
Open-ILS/src/Android/core/.idea/vcs.xml
Open-ILS/src/Android/core/core.iml
Open-ILS/src/Android/core/src/org/open_ils/test/fm_IDL.xml [new file with mode: 0644]
Open-ILS/src/Android/core/src/org/open_ils/test/org/evergreen_ils/views/MainActivityTest.java [new file with mode: 0644]
Open-ILS/src/Android/cwmars_app/.idea/misc.xml
Open-ILS/src/Android/cwmars_app/.idea/modules.xml
Open-ILS/src/Android/cwmars_app/tests/AndroidManifest.xml [new file with mode: 0644]
Open-ILS/src/Android/cwmars_app/tests/ant.properties [new file with mode: 0644]
Open-ILS/src/Android/cwmars_app/tests/build.xml [new file with mode: 0644]
Open-ILS/src/Android/cwmars_app/tests/project.properties [new file with mode: 0644]
Open-ILS/src/Android/cwmars_app/tests/tests.iml [new file with mode: 0644]

index 3572571..e7bedf3 100644 (file)
@@ -1,5 +1,3 @@
 <component name="CopyrightManager">
-  <settings default="">
-    <module2copyright />
-  </settings>
+  <settings default="" />
 </component>
\ No newline at end of file
index e206d70..f758959 100644 (file)
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
-  <component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" />
-</project>
-
+  <component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false">
+    <file url="PROJECT" charset="UTF-8" />
+  </component>
+</project>
\ No newline at end of file
index 2a79cae..4fce1d8 100644 (file)
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
   <component name="VcsDirectoryMappings">
-    <mapping directory="" vcs="" />
     <mapping directory="$PROJECT_DIR$/../../../.." vcs="Git" />
   </component>
-</project>
-
+</project>
\ No newline at end of file
index ce7d091..1c9cffb 100644 (file)
     <content url="file://$MODULE_DIR$">
       <sourceFolder url="file://$MODULE_DIR$/gen" isTestSource="false" generated="true" />
       <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
-      <excludeFolder url="file://$MODULE_DIR$/src/org/open_ils/test" />
+      <sourceFolder url="file://$MODULE_DIR$/src/org/open_ils/test" isTestSource="true" />
     </content>
     <content url="file://$MODULE_DIR$/../opensrf">
       <sourceFolder url="file://$MODULE_DIR$/../opensrf/src" isTestSource="false" />
       <sourceFolder url="file://$MODULE_DIR$/../opensrf/src/org/opensrf/test" isTestSource="true" />
-      <excludeFolder url="file://$MODULE_DIR$/../opensrf/src/org/opensrf/net/xmpp" />
     </content>
     <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="inheritedJdk" />
     <orderEntry type="module" module-name="appcompat" exported="" />
     <orderEntry type="module-library" exported="">
       <library>
         </SOURCES>
       </library>
     </orderEntry>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="module-library" scope="TEST">
+      <library name="JUnit4">
+        <CLASSES>
+          <root url="jar://$APPLICATION_HOME_DIR$/lib/junit-4.12.jar!/" />
+          <root url="jar://$APPLICATION_HOME_DIR$/lib/hamcrest-core-1.3.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
   </component>
 </module>
\ No newline at end of file
diff --git a/Open-ILS/src/Android/core/src/org/open_ils/test/fm_IDL.xml b/Open-ILS/src/Android/core/src/org/open_ils/test/fm_IDL.xml
new file mode 100644 (file)
index 0000000..714a514
--- /dev/null
@@ -0,0 +1,689 @@
+<IDL xmlns:idl='http://opensrf.org/spec/IDL/base/v1' xmlns='http://opensrf.org/spec/IDL/base/v1' xmlns:permacrud='http://open-ils.org/spec/opensrf/IDL/permacrud/v1' xmlns:reporter='http://open-ils.org/spec/opensrf/IDL/reporter/v1' xmlns:oils_obj='http://open-ils.org/spec/opensrf/IDL/objects/v1' xmlns:oils_persist='http://open-ils.org/spec/opensrf/IDL/persistence/v1'><class oils_obj:fieldmapper='metabib::virtual_record' reporter:label='Virtual Record' controller='open-ils.cstore' id='mvr' oils_persist:virtual='true'>
+               <fields>
+                       <field name='title' oils_persist:virtual='true'></field>
+                       <field name='author' oils_persist:virtual='true'></field>
+                       <field name='doc_id' oils_persist:virtual='true'></field>
+                       <field name='doc_type' oils_persist:virtual='true'></field>
+                       <field name='pubdate' oils_persist:virtual='true'></field>
+                       <field name='isbn' oils_persist:virtual='true'></field>
+                       <field name='publisher' oils_persist:virtual='true'></field>
+                       <field name='tcn' oils_persist:virtual='true'></field>
+                       <field name='subject' oils_persist:virtual='true'></field>
+                       <field name='types_of_resource' oils_persist:virtual='true'></field>
+                       <field name='call_numbers' oils_persist:virtual='true'></field>
+                       <field name='edition' oils_persist:virtual='true'></field>
+                       <field name='online_loc' oils_persist:virtual='true'></field>
+                       <field name='synopsis' oils_persist:virtual='true'></field>
+                       <field name='physical_description' oils_persist:virtual='true'></field>
+                       <field name='toc' oils_persist:virtual='true'></field>
+                       <field name='copy_count' oils_persist:virtual='true'></field>
+                       <field name='series' oils_persist:virtual='true'></field>
+                       <field name='serials' oils_persist:virtual='true'></field>
+                       <field name='foreign_copy_maps' oils_persist:virtual='true'></field>
+               </fields>
+       </class><class oils_obj:fieldmapper='ex' controller='open-ils.cstore' id='ex' oils_persist:virtual='true'>
+               <fields>
+                       <field name='err_msg' oils_persist:virtual='true'></field>
+                       <field name='type' oils_persist:virtual='true'></field>
+               </fields>
+       </class><class oils_obj:fieldmapper='perm_ex' controller='open-ils.cstore' id='perm_ex' oils_persist:virtual='true'>
+               <fields>
+                       <field name='err_msg' oils_persist:virtual='true'></field>
+                       <field name='type' oils_persist:virtual='true'></field>
+               </fields>
+       </class><class reporter:label='SVF Record Attribute' oils_persist:tablename='metabib.record_attr' oils_obj:fieldmapper='metabib::record_attr' controller='open-ils.cstore open-ils.pcrud' oils_persist:field_safe='true' id='mra' oils_persist:readonly='true'>
+               <fields oils_persist:primary='id'>
+                       <field reporter:label='Record ID' name='id' reporter:datatype='id' oils_obj:required='true'></field>
+                       <field reporter:label='Attributes' name='attrs' reporter:datatype='text' oils_obj:required='true'></field>
+               </fields>
+               <links>
+                       <link field='id' reltype='has_a' class='bre' key='id' map=''></link>
+               </links>
+        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'>
+            <actions>
+                <retrieve></retrieve>
+            </actions>
+        </permacrud>
+       </class><class reporter:label='Billable Transaction Summary' oils_persist:tablename='money.materialized_billable_xact_summary' oils_obj:fieldmapper='money::billable_transaction_summary' controller='open-ils.cstore open-ils.pcrud' id='mbts' oils_persist:readonly='true'>
+               <fields oils_persist:sequence='' oils_persist:primary='id'>
+                       <field reporter:label='Balance Owed' name='balance_owed' reporter:datatype='money'></field>
+                       <field reporter:label='Transaction ID' name='id' reporter:datatype='id'></field>
+                       <field reporter:label='Last Billing Note' name='last_billing_note' reporter:datatype='text'></field>
+                       <field reporter:label='Last Billing Timestamp' name='last_billing_ts' reporter:datatype='timestamp'></field>
+                       <field reporter:label='Last Billing Type' name='last_billing_type' reporter:datatype='text'></field>
+                       <field reporter:label='Last Payment Note' name='last_payment_note' reporter:datatype='text'></field>
+                       <field reporter:label='Last Payment Timestamp' name='last_payment_ts' reporter:datatype='timestamp'></field>
+                       <field reporter:label='Last Payment Type' name='last_payment_type' reporter:datatype='text'></field>
+                       <field reporter:label='Total Owed' name='total_owed' reporter:datatype='money'></field>
+                       <field reporter:label='Total Paid' name='total_paid' reporter:datatype='money'></field>
+                       <field reporter:label='Billed User' name='usr' reporter:datatype='link'></field>
+                       <field reporter:label='Transaction Finish Time' name='xact_finish' reporter:datatype='timestamp'></field>
+                       <field reporter:label='Transaction Start Time' name='xact_start' reporter:datatype='timestamp'></field>
+                       <field reporter:label='Transaction Type' name='xact_type' reporter:datatype='text'></field>
+               </fields>
+               <links>
+                       <link field='usr' reltype='has_a' class='au' key='id' map=''></link>
+               </links>
+               <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'>
+                       <actions>
+                               <retrieve permission='VIEW_USER_TRANSACTIONS'>
+                                       <context field='home_ou' link='usr'></context>
+                               </retrieve>
+                       </actions>
+               </permacrud>
+       </class><class oils_obj:fieldmapper='asset::call_number' reporter:label='Call Number/Volume' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='asset.call_number' id='acn'>
+               <fields oils_persist:sequence='asset.call_number_id_seq' oils_persist:primary='id'>
+                       <field reporter:label='Copies' name='copies' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Create Date/Time' name='create_date' reporter:datatype='timestamp'></field>
+                       <field reporter:label='Creating User' name='creator' reporter:datatype='link'></field>
+                       <field reporter:label='Is Deleted' name='deleted' reporter:datatype='bool'></field>
+                       <field reporter:label='Last Edit Date/Time' name='edit_date' reporter:datatype='timestamp'></field>
+                       <field reporter:label='Last Editing User' name='editor' reporter:datatype='link'></field>
+                       <field reporter:label='Call Number/Volume ID' name='id' reporter:datatype='id'></field>
+                       <field reporter:label='Call Number Label' name='label' reporter:datatype='text'></field>
+                       <field reporter:label='Owning Library' name='owning_lib' reporter:datatype='org_unit'></field>
+                       <field reporter:label='Bib Record' name='record' reporter:datatype='link'></field>
+                       <field reporter:label='Notes' name='notes' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='URI Maps' name='uri_maps' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='URIs' name='uris' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Call Number Sort Key' name='label_sortkey' reporter:datatype='text'></field>
+                       <field reporter:label='Classification Scheme' name='label_class' reporter:datatype='link'></field>
+                       <field reporter:label='Prefix' name='prefix' reporter:datatype='link'></field>
+                       <field reporter:label='Suffix' name='suffix' reporter:datatype='link'></field>
+               </fields>
+               <links>
+                       <link field='editor' reltype='has_a' class='au' key='id' map=''></link>
+                       <link field='creator' reltype='has_a' class='au' key='id' map=''></link>
+                       <link field='record' reltype='has_a' class='bre' key='id' map=''></link>
+                       <link field='owning_lib' reltype='has_a' class='aou' key='id' map=''></link>
+                       <link field='notes' reltype='has_many' class='acnn' key='call_number' map=''></link>
+                       <link field='copies' reltype='has_many' class='acp' key='call_number' map=''></link>
+                       <link field='uris' reltype='has_many' class='auricnm' key='call_number' map='uri'></link>
+                       <link field='uri_maps' reltype='has_many' class='auricnm' key='call_number' map=''></link>
+                       <link field='label_class' reltype='has_a' class='acnc' key='id' map=''></link>
+                       <link field='prefix' reltype='has_a' class='acnp' key='id' map=''></link>
+                       <link field='suffix' reltype='has_a' class='acns' key='id' map=''></link>
+               </links>
+        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'>
+            <actions>
+                <create context_field='owning_lib' permission='CREATE_VOLUME'></create>
+                <retrieve></retrieve>
+                <update context_field='owning_lib' permission='UPDATE_VOLUME'></update>
+                <delete context_field='owning_lib' permission='DELETE_VOLUME'></delete>
+            </actions>
+        </permacrud>
+       </class><class oils_obj:fieldmapper='money::open_user_summary' reporter:label='Open User Summary' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='money.open_usr_summary' id='mous'>
+               <fields oils_persist:sequence='' oils_persist:primary='usr'>
+                       <field name='balance_owed' reporter:datatype='money'></field>
+                       <field name='total_owed' reporter:datatype='money'></field>
+                       <field name='total_paid' reporter:datatype='money'></field>
+                       <field name='usr' reporter:datatype='link'></field>
+               </fields>
+               <links>
+                       <link field='usr' reltype='has_a' class='au' key='id' map=''></link>
+        </links>
+        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'>
+            <actions>
+                <retrieve permission='VIEW_USER'>
+                    <context field='home_ou' link='usr'></context>
+                </retrieve>
+            </actions>
+        </permacrud>
+       </class><class reporter:label='Monograph Parts' oils_persist:tablename='biblio.monograph_part' oils_obj:fieldmapper='biblio::monograph_part' controller='open-ils.cstore open-ils.pcrud' oils_persist:field_safe='true' id='bmp'>
+               <fields oils_persist:sequence='biblio.monograph_part_id_seq' oils_persist:primary='id'>
+                       <field name='id' reporter:datatype='id'></field>
+                       <field name='record' reporter:datatype='link'></field>
+                       <field name='label' reporter:datatype='text'></field>
+                       <field name='label_sortkey' reporter:datatype='text'></field>
+               </fields>
+               <links>
+                       <link field='record' reltype='has_a' class='bre' key='id' map=''></link>
+               </links>
+        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'>
+            <actions>
+                <create global_required='true' permission='CREATE_MONOGRAPH_PART'></create>
+                <retrieve></retrieve>
+                <update global_required='true' permission='UPDATE_MONOGRAPH_PART'></update>
+                <delete global_required='true' permission='DELETE_MONOGRAPH_PART'></delete>
+            </actions>
+        </permacrud>
+       </class><class reporter:label='ILS User' oils_persist:tablename='actor.usr' reporter:core='true' oils_obj:fieldmapper='actor::user' controller='open-ils.cstore open-ils.pcrud' id='au'>
+               <fields oils_persist:sequence='actor.usr_id_seq' oils_persist:primary='id'>
+                       <field reporter:label='All Addresses' name='addresses' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='All Library Cards' name='cards' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='All Circulations' name='checkouts' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='All Hold Requests' name='hold_requests' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='All Permissions' name='permissions' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='All User Settings' name='settings' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Standing Penalties' name='standing_penalties' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Statistical Category Entries' name='stat_cat_entries' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Survey Responses' name='survey_responses' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Workstation Org Unit' name='ws_ou' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Workstation ID' name='wsid' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Active' name='active' reporter:datatype='bool'></field>
+                       <field reporter:label='Alert Message' name='alert_message' reporter:datatype='text'></field>
+                       <field reporter:label='Barred' name='barred' reporter:datatype='bool'></field>
+                       <field reporter:label='Physical Address' name='billing_address' reporter:datatype='link'></field>
+                       <field reporter:label='Current Library Card' name='card' reporter:datatype='link'></field>
+                       <field reporter:label='Claims-returned Count' name='claims_returned_count' reporter:datatype='int'></field>
+                       <field reporter:label='Claims Never Checked Out Count' name='claims_never_checked_out_count' reporter:datatype='int'></field>
+                       <field reporter:label='Record Creation Date/Time' name='create_date' reporter:datatype='timestamp'></field>
+                       <field reporter:label='User Credit Balance' name='credit_forward_balance' reporter:datatype='money'></field>
+                       <field reporter:label='Daytime Phone' name='day_phone' reporter:datatype='text'></field>
+                       <field reporter:label='Date of Birth' name='dob' reporter:datatype='timestamp'></field>
+                       <field reporter:label='Email Address' name='email' reporter:datatype='text'></field>
+                       <field reporter:label='Evening Phone' name='evening_phone' reporter:datatype='text'></field>
+                       <field reporter:label='Privilege Expiration Date' name='expire_date' reporter:datatype='timestamp'></field>
+                       <field reporter:label='Last Name' name='family_name' reporter:datatype='text'></field>
+                       <field reporter:label='First Name' name='first_given_name' reporter:datatype='text'></field>
+                       <field reporter:label='Home Library' name='home_ou' reporter:datatype='org_unit'></field>
+                       <field reporter:label='User ID' name='id' reporter:datatype='id'></field>
+                       <field reporter:label='Primary Identification Type' name='ident_type' reporter:datatype='link'></field>
+                       <field reporter:label='Secondary Identification Type' name='ident_type2' reporter:datatype='link'></field>
+                       <field reporter:label='Primary Identification' name='ident_value' reporter:datatype='text'></field>
+                       <field reporter:label='Secondary Identification' name='ident_value2' reporter:datatype='text'></field>
+                       <field reporter:label='Last Transaction ID' name='last_xact_id' reporter:datatype='text'></field>
+                       <field reporter:label='Mailing Address' name='mailing_address' reporter:datatype='link'></field>
+                       <field reporter:label='Is Group Lead Account' name='master_account' reporter:datatype='bool'></field>
+                       <field reporter:label='Internet Access Level' name='net_access_level' reporter:datatype='link'></field>
+                       <field reporter:label='Other Phone' name='other_phone' reporter:datatype='text'></field>
+                       <field reporter:label='Password' name='passwd' reporter:datatype='text' suppress_controller='open-ils.pcrud open-ils.reporter-store'></field>
+                       <field reporter:label='Photo URL' name='photo_url' reporter:datatype='text'></field>
+                       <field reporter:label='Prefix/Title' name='prefix' reporter:datatype='text'></field>
+                       <field reporter:label='Main (Profile) Permission Group' name='profile' reporter:datatype='link'></field>
+                       <field reporter:label='Middle Name' name='second_given_name' reporter:datatype='text'></field>
+                       <field reporter:label='Standing (unused)' name='standing' reporter:datatype='link'></field>
+                       <field reporter:label='Suffix' name='suffix' reporter:datatype='text'></field>
+                       <field reporter:label='Is Super User' name='super_user' reporter:datatype='bool'></field>
+                       <field reporter:label='Family Linkage or other Group' name='usrgroup' reporter:datatype='int'></field>
+                       <field reporter:label='OPAC/Staff Client User Name' name='usrname' reporter:datatype='text'></field>
+                       <field reporter:label='OPAC/Staff Client Holds Alias' name='alias' reporter:datatype='text'></field>
+                       <field reporter:label='Juvenile' name='juvenile' reporter:datatype='bool'></field>
+                       <field reporter:label='Record Last Update Time' name='last_update_time' reporter:datatype='timestamp'></field>
+                       <field reporter:label='Additional Permission Groups' name='groups' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Is Deleted' name='deleted' reporter:datatype='bool'></field>
+                       <field reporter:label='User Notes' name='notes' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Demographic Info' name='demographic' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Billable Transactions' name='billable_transactions' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Money Summary' name='money_summary' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Open Billable Transactions' name='open_billable_transactions_summary' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Checkins' name='checkins' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Circulations Performed as Staff' name='performed_circulations' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Fund Allocation Percentages' name='fund_alloc_pcts' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Reservations' name='reservations' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='User Activity Entries' name='usr_activity' reporter:datatype='link' oils_persist:virtual='true'></field>
+               </fields>
+               <links>
+                       <link field='demographic' reltype='might_have' class='rud' key='id' map=''></link>
+                       <link field='net_access_level' reltype='has_a' class='cnal' key='id' map=''></link>
+                       <link field='profile' reltype='has_a' class='pgt' key='id' map=''></link>
+                       <link field='ident_type' reltype='has_a' class='cit' key='id' map=''></link>
+                       <link field='billing_address' reltype='has_a' class='aua' key='id' map=''></link>
+                       <link field='mailing_address' reltype='has_a' class='aua' key='id' map=''></link>
+                       <link field='home_ou' reltype='has_a' class='aou' key='id' map=''></link>
+                       <link field='standing' reltype='has_a' class='cst' key='id' map=''></link>
+                       <link field='card' reltype='has_a' class='ac' key='id' map=''></link>
+                       <link field='ident_type2' reltype='has_a' class='cit' key='id' map=''></link>
+                       <link field='stat_cat_entries' reltype='has_many' class='actscecm' key='target_usr' map=''></link>
+                       <link field='groups' reltype='has_many' class='pugm' key='usr' map='grp'></link>
+                       <link field='usrgroup' reltype='has_many' class='au' key='usrgroup' map=''></link>
+                       <link field='checkouts' reltype='has_many' class='circ' key='usr' map=''></link>
+                       <link field='hold_requests' reltype='has_many' class='ahr' key='usr' map=''></link>
+                       <link field='permissions' reltype='has_many' class='pupm' key='usr' map='perm'></link>
+                       <link field='settings' reltype='has_many' class='aus' key='usr' map=''></link>
+                       <link field='billable_transactions' reltype='has_many' class='mbt' key='usr' map=''></link>
+                       <link field='open_billable_transactions_summary' reltype='has_many' class='mobts' key='usr' map=''></link>
+                       <link field='money_summary' reltype='might_have' class='mus' key='usr' map=''></link>
+                       <link field='standing_penalties' reltype='has_many' class='ausp' key='usr' map=''></link>
+                       <link field='addresses' reltype='has_many' class='aua' key='usr' map=''></link>
+                       <link field='survey_responses' reltype='has_many' class='asvr' key='usr' map=''></link>
+                       <link field='notes' reltype='has_many' class='aun' key='usr' map=''></link>
+                       <link field='checkins' reltype='has_many' class='circ' key='checkin_staff' map=''></link>
+                       <link field='cards' reltype='has_many' class='ac' key='usr' map=''></link>
+                       <link field='performed_circulations' reltype='has_many' class='circ' key='circ_staff' map=''></link>
+                       <link field='fund_alloc_pcts' reltype='has_many' class='acqfap' key='allocator' map=''></link>
+                       <link field='reservations' reltype='has_many' class='bresv' key='usr' map=''></link>
+                       <link field='usr_activity' reltype='has_many' class='auact' key='usr' map=''></link>
+               </links>
+               <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'>
+                       <actions>
+                               <retrieve context_field='home_ou' permission='VIEW_USER'></retrieve>
+                       </actions>
+               </permacrud>
+       </class><class reporter:label='Copy Status' oils_persist:tablename='config.copy_status' oils_obj:fieldmapper='config::copy_status' controller='open-ils.cstore open-ils.pcrud' oils_persist:field_safe='true' id='ccs' oils_persist:restrict_primary='100'>
+               <fields oils_persist:sequence='config.copy_status_id_seq' oils_persist:primary='id'>
+                       <field name='holdable' reporter:datatype='bool'></field>
+                       <field name='id' reporter:datatype='id' reporter:selector='name'></field>
+                       <field name='name' reporter:datatype='text' oils_persist:i18n='true'></field>
+                       <field name='opac_visible' reporter:datatype='bool'></field>
+            <field name='copy_active' reporter:datatype='bool'></field>
+           <field name='restrict_copy_delete' reporter:datatype='bool'></field>
+               </fields>
+               <links></links>
+        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'>
+            <actions>
+                <create global_required='true' permission='CREATE_COPY_STATUS'></create>
+                <retrieve></retrieve>
+                <update global_required='true' permission='UPDATE_COPY_STATUS'></update>
+                <delete global_required='true' permission='DELETE_COPY_STATUS'></delete>
+            </actions>
+        </permacrud>
+       </class><class reporter:label='Circulation' oils_persist:tablename='action.circulation' reporter:core='true' oils_obj:fieldmapper='action::circulation' controller='open-ils.cstore open-ils.pcrud' id='circ'>
+               <fields oils_persist:sequence='money.billable_xact_id_seq' oils_persist:primary='id'>
+                       <field reporter:label='Check In Library' name='checkin_lib' reporter:datatype='org_unit'></field>
+                       <field reporter:label='Check In Staff' name='checkin_staff' reporter:datatype='link'></field>
+                       <field reporter:label='Check In Date/Time' name='checkin_time' reporter:datatype='timestamp'></field>
+                       <field reporter:label='Circulating Library' name='circ_lib' reporter:datatype='org_unit'></field>
+                       <field reporter:label='Circulating Staff' name='circ_staff' reporter:datatype='link'></field>
+                       <field reporter:label='Desk Renewal' name='desk_renewal' reporter:datatype='bool'></field>
+                       <field reporter:label='Due Date/Time' name='due_date' reporter:datatype='timestamp'></field>
+                       <field reporter:label='Circulation Duration' name='duration' reporter:datatype='interval'></field>
+                       <field reporter:label='Circ Duration Rule' name='duration_rule' reporter:datatype='link'></field>
+                       <field reporter:label='Fine Interval' name='fine_interval' reporter:datatype='interval'></field>
+                       <field reporter:label='Circ ID' name='id' reporter:datatype='id'></field>
+                       <field reporter:label='Max Fine Amount' name='max_fine' reporter:datatype='money'></field>
+                       <field reporter:label='Max Fine Rule' name='max_fine_rule' reporter:datatype='link'></field>
+                       <field reporter:label='OPAC Renewal' name='opac_renewal' reporter:datatype='bool'></field>
+                       <field reporter:label='Phone Renewal' name='phone_renewal' reporter:datatype='bool'></field>
+                       <field reporter:label='Recurring Fine Amount' name='recurring_fine' reporter:datatype='money'></field>
+                       <field reporter:label='Recurring Fine Rule' name='recurring_fine_rule' reporter:datatype='link'></field>
+                       <field reporter:label='Remaining Renewals' name='renewal_remaining' reporter:datatype='int'></field>
+                       <field reporter:label='Grace Period' name='grace_period' reporter:datatype='interval'></field>
+                       <field reporter:label='Fine Stop Reason' name='stop_fines' reporter:datatype='text'></field>
+                       <field reporter:label='Fine Stop Date/Time' name='stop_fines_time' reporter:datatype='timestamp'></field>
+                       <field reporter:label='Circulating Item' name='target_copy' reporter:datatype='link'></field>
+                       <field reporter:label='Patron' name='usr' reporter:datatype='link'></field>
+                       <field reporter:label='Transaction Finish Date/Time' name='xact_finish' reporter:datatype='timestamp'></field>
+                       <field reporter:label='Checkout Date/Time' name='xact_start' reporter:datatype='timestamp'></field>
+                       <field reporter:label='Record Creation Date/Time' name='create_time' reporter:datatype='timestamp'></field>
+                       <field reporter:label='Workstation' name='workstation' reporter:datatype='link'></field>
+                       <field reporter:label='Checkin Workstation' name='checkin_workstation' reporter:datatype='link'></field>
+                       <field reporter:label='Checkin Scan Date/Time' name='checkin_scan_time' reporter:datatype='timestamp'></field>
+                       <field reporter:label='Parent Circulation' name='parent_circ' reporter:datatype='link'></field>
+                       <field reporter:label='Transaction Billings' name='billings' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Transaction Payments' name='payments' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Base Transaction' name='billable_transaction' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Circulation Type' name='circ_type' reporter:datatype='text' oils_persist:virtual='true'></field>
+                       <field reporter:label='Billing Totals' name='billing_total' reporter:datatype='money' oils_persist:virtual='true'></field>
+                       <field reporter:label='Payment Totals' name='payment_total' reporter:datatype='money' oils_persist:virtual='true'></field>
+                       <field reporter:label='Unrecovered Debt' name='unrecovered' reporter:datatype='bool'></field>
+                       <field reporter:label='Shelving Location' name='copy_location' reporter:datatype='link'></field>
+                       <field reporter:label='Archived Patron Stat-Cat Entries' name='aaactsc_entries' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Archived Copy Stat-Cat Entries' name='aaasc_entries' reporter:datatype='link' oils_persist:virtual='true'></field>
+               </fields>
+               <links>
+                       <link field='billable_transaction' reltype='might_have' class='mbt' key='id' map=''></link>
+                       <link field='circ_staff' reltype='has_a' class='au' key='id' map=''></link>
+                       <link field='checkin_lib' reltype='has_a' class='aou' key='id' map=''></link>
+                       <link field='target_copy' reltype='has_a' class='acp' key='id' map=''></link>
+                       <link field='checkin_staff' reltype='has_a' class='au' key='id' map=''></link>
+                       <link field='usr' reltype='has_a' class='au' key='id' map=''></link>
+                       <link field='circ_lib' reltype='has_a' class='aou' key='id' map=''></link>
+                       <link field='payments' reltype='has_many' class='mp' key='xact' map=''></link>
+                       <link field='billings' reltype='has_many' class='mb' key='xact' map=''></link>
+                       <link field='duration_rule' reltype='has_a' class='crcd' key='name' map=''></link>
+                       <link field='max_fine_rule' reltype='has_a' class='crmf' key='name' map=''></link>
+                       <link field='recurring_fine_rule' reltype='has_a' class='crrf' key='name' map=''></link>
+                       <link field='circ_type' reltype='might_have' class='rcirct' key='id' map=''></link>
+                       <link field='billing_total' reltype='might_have' class='rxbt' key='xact' map=''></link>
+                       <link field='payment_total' reltype='might_have' class='rxpt' key='xact' map=''></link>
+                       <link field='workstation' reltype='has_a' class='aws' key='id' map=''></link>
+                       <link field='checkin_workstation' reltype='has_a' class='aws' key='id' map=''></link>
+                       <link field='parent_circ' reltype='has_a' class='circ' key='id' map=''></link>
+                       <link field='renewals' reltype='has_many' class='circ' key='parent_circ' map=''></link>
+                       <link field='copy_location' reltype='has_a' class='acpl' key='id' map=''></link>
+                       <link field='aaactsc_entries' reltype='has_many' class='aaactsc' key='xact' map=''></link>
+                       <link field='aaasc_entries' reltype='has_many' class='aaasc' key='xact' map=''></link>
+               </links>
+               <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'>
+                       <actions>
+                               <retrieve context_field='circ_lib' permission='VIEW_CIRCULATIONS'></retrieve>
+                       </actions>
+               </permacrud>
+       </class><class oils_obj:fieldmapper='container::biblio_record_entry_bucket' reporter:label='Bibliographic Record Entry Bucket' controller='open-ils.cstore' oils_persist:tablename='container.biblio_record_entry_bucket' id='cbreb'>
+               <fields oils_persist:sequence='container.biblio_record_entry_bucket_id_seq' oils_persist:primary='id'>
+                       <field name='items' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field name='btype' reporter:datatype='text'></field>
+                       <field name='id' reporter:datatype='id'></field>
+                       <field name='name' reporter:datatype='text'></field>
+                       <field name='description' reporter:datatype='text'></field>
+                       <field name='owner' reporter:datatype='link'></field>
+                       <field name='pub' reporter:datatype='bool'></field>
+                       <field name='create_time' reporter:datatype='timestamp'></field>
+               </fields>
+               <links>
+                       <link field='owner' reltype='has_a' class='au' key='id' map=''></link>
+                       <link field='items' reltype='has_many' class='cbrebi' key='bucket' map=''></link>
+               </links>
+       </class><class oils_obj:fieldmapper='container::biblio_record_entry_bucket_note' reporter:label='Bibliographic Record Entry Bucket Note' controller='open-ils.cstore' oils_persist:tablename='container.biblio_record_entry_bucket_note' id='cbrebn'>
+               <fields oils_persist:sequence='container.biblio_record_entry_bucket_note_id_seq' oils_persist:primary='id'>
+                       <field name='id' reporter:datatype='id'></field>
+                       <field name='bucket' reporter:datatype='link'></field>
+                       <field name='note' reporter:datatype='text'></field>
+               </fields>
+               <links>
+                       <link field='bucket' reltype='has_a' class='cbreb' key='id' map=''></link>
+               </links>
+       </class><class reporter:label='Hold Request' oils_persist:tablename='action.hold_request' reporter:core='true' oils_obj:fieldmapper='action::hold_request' controller='open-ils.cstore open-ils.pcrud' id='ahr'>
+               <fields oils_persist:sequence='action.hold_request_id_seq' oils_persist:primary='id'>
+                       <field reporter:label='Status' name='status' oils_persist:virtual='true'></field>
+                       <field reporter:label='Transit' name='transit' oils_persist:virtual='true'></field>
+                       <field reporter:label='Capture Date/Time' name='capture_time' reporter:datatype='timestamp'></field>
+                       <field reporter:label='Currently Targeted Copy' name='current_copy'></field>
+                       <field reporter:label='Notify by Email?' name='email_notify' reporter:datatype='bool'></field>
+                       <field reporter:label='Hold Expire Date/Time' name='expire_time' reporter:datatype='timestamp'></field>
+                       <field reporter:label='Fulfilling Library' name='fulfillment_lib' reporter:datatype='org_unit'></field>
+                       <field reporter:label='Fulfilling Staff' name='fulfillment_staff'></field>
+                       <field reporter:label='Fulfillment Date/Time' name='fulfillment_time' reporter:datatype='timestamp'></field>
+                       <field reporter:label='Hold Type' name='hold_type' reporter:datatype='text'></field>
+                       <field reporter:label='Holdable Formats (for M-type hold)' name='holdable_formats' reporter:datatype='text'></field>
+                       <field reporter:label='Hold ID' name='id' reporter:datatype='id'></field>
+                       <field reporter:label='Notifications Phone Number' name='phone_notify' reporter:datatype='text'></field>
+                       <field reporter:label='Notifications SMS Number' name='sms_notify' reporter:datatype='text'></field>
+                       <field reporter:label='Notifications SMS Carrier' name='sms_carrier' reporter:datatype='link'></field>
+                       <field reporter:label='Pickup Library' name='pickup_lib' reporter:datatype='org_unit'></field>
+                       <field reporter:label='Last Targeting Date/Time' name='prev_check_time' reporter:datatype='timestamp'></field>
+                       <field reporter:label='Requesting Library' name='request_lib' reporter:datatype='org_unit'></field>
+                       <field reporter:label='Request Date/Time' name='request_time' reporter:datatype='timestamp'></field>
+                       <field reporter:label='Requesting User' name='requestor' reporter:datatype='link'></field>
+                       <field reporter:label='Item Selection Depth' name='selection_depth'></field>
+                       <field reporter:label='Selection Locus' name='selection_ou' reporter:datatype='org_unit'></field>
+                       <field reporter:label='Target Object ID' name='target' reporter:datatype='link'></field>
+                       <field reporter:label='Hold User' name='usr' reporter:datatype='link'></field>
+                       <field reporter:label='Hold Cancel Date/Time' name='cancel_time' reporter:datatype='timestamp'></field>
+                       <field reporter:label='Notify Time' name='notify_time' reporter:datatype='timestamp' oils_persist:virtual='true'></field>
+                       <field reporter:label='Notify Count' name='notify_count' reporter:datatype='int' oils_persist:virtual='true'></field>
+                       <field reporter:label='Notifications' name='notifications' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Bib Record link' name='bib_rec' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Eligible Copies' name='eligible_copies' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Currently Frozen' name='frozen' reporter:datatype='bool'></field>
+                       <field reporter:label='Activation Date' name='thaw_date' reporter:datatype='timestamp'></field>
+                       <field reporter:label='Shelf Time' name='shelf_time' reporter:datatype='timestamp'></field>
+                       <field reporter:label='Cancelation cause' name='cancel_cause' reporter:datatype='link'></field>
+                       <field reporter:label='Cancelation note' name='cancel_note' reporter:datatype='text'></field>
+                       <field reporter:label='Top of Queue' name='cut_in_line' reporter:datatype='bool'></field>
+                       <field reporter:label='Is Mint Condition' name='mint_condition' reporter:datatype='bool'></field>
+                       <field reporter:label='Shelf Expire Time' name='shelf_expire_time' reporter:datatype='timestamp'></field>
+                       <field reporter:label='Notes' name='notes' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Current Shelf Lib' name='current_shelf_lib' reporter:datatype='org_unit'></field>
+                       <field reporter:label='Behind Desk' name='behind_desk' reporter:datatype='bool'></field>
+               </fields>
+               <links>
+                       <link field='fulfillment_lib' reltype='has_a' class='aou' key='id' map=''></link>
+                       <link field='fulfillment_staff' reltype='has_a' class='au' key='id' map=''></link>
+                       <link field='pickup_lib' reltype='has_a' class='aou' key='id' map=''></link>
+                       <link field='selection_ou' reltype='has_a' class='aou' key='id' map=''></link>
+                       <link field='requestor' reltype='has_a' class='au' key='id' map=''></link>
+                       <link field='current_copy' reltype='has_a' class='acp' key='id' map=''></link>
+                       <link field='usr' reltype='has_a' class='au' key='id' map=''></link>
+                       <link field='request_lib' reltype='has_a' class='aou' key='id' map=''></link>
+                       <link field='transit' reltype='might_have' class='ahtc' key='hold' map=''></link>
+                       <link field='notifications' reltype='has_many' class='ahn' key='hold' map=''></link>
+                       <link field='eligible_copies' reltype='has_many' class='ahcm' key='hold' map='target_copy'></link>
+                       <link field='bib_rec' reltype='might_have' class='rhrr' key='id' map=''></link>
+                       <link field='cancel_cause' reltype='might_have' class='ahrcc' key='id' map=''></link>
+                       <link field='notes' reltype='has_many' class='ahrn' key='hold' map=''></link>
+                       <link field='current_shelf_lib' reltype='has_a' class='aou' key='id' map=''></link>
+                       <link field='sms_carrier' reltype='has_a' class='csc' key='id' map=''></link>
+               </links>
+               <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'>
+                       <actions>
+                               <retrieve context_field='pickup_lib' permission='VIEW_HOLD'></retrieve>
+                       </actions>
+               </permacrud>
+       </class><class reporter:label='Organizational Unit' oils_persist:tablename='actor.org_unit' oils_obj:fieldmapper='actor::org_unit' controller='open-ils.cstore open-ils.pcrud' oils_persist:field_safe='true' id='aou'>
+               <fields oils_persist:sequence='actor.org_unit_id_seq' oils_persist:primary='id'>
+                       <field reporter:label='Subordinate Organizational Units' name='children' reporter:datatype='org_unit' oils_persist:virtual='true'></field>
+                       <field reporter:label='Billing Address' name='billing_address' reporter:datatype='link'></field>
+                       <field reporter:label='Holds Receiving Address' name='holds_address' reporter:datatype='link'></field>
+                       <field reporter:label='Organizational Unit ID' name='id' reporter:datatype='org_unit' reporter:selector='shortname'></field>
+                       <field reporter:label='ILL Receiving Address' name='ill_address' reporter:datatype='link'></field>
+                       <field reporter:label='Mailing Address' name='mailing_address' reporter:datatype='link'></field>
+                       <field reporter:label='Name' name='name' reporter:datatype='text' oils_persist:i18n='true'></field>
+                       <field reporter:label='Organizational Unit Type' name='ou_type' reporter:datatype='link'></field>
+                       <field reporter:label='Parent Organizational Unit' name='parent_ou' reporter:datatype='link'></field>
+                       <field reporter:label='Short (Policy) Name' oils_obj:validate='^.+$' name='shortname' reporter:datatype='text' oils_obj:required='true'></field>
+                       <field reporter:label='Email Address' name='email' reporter:datatype='text'></field>
+                       <field reporter:label='Phone Number' name='phone' reporter:datatype='text'></field>
+                       <field reporter:label='OPAC Visible' name='opac_visible' reporter:datatype='bool'></field>
+                       <field reporter:label='Fiscal Calendar' name='fiscal_calendar' reporter:datatype='link'></field>
+                       <field reporter:label='Users' name='users' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Closed Dates' name='closed_dates' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Circulations' name='circulations' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Settings' name='settings' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Addresses' name='addresses' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Checkins' name='checkins' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Workstations' name='workstations' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Fund Allocation Percentages' name='fund_alloc_pcts' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Copy Location Orders' name='copy_location_orders' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Transit Copy Prev Destinations' name='atc_prev_dests' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Reservation Requests' name='resv_requests' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Reservation Pickups' name='resv_pickups' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Resource Types' name='rsrc_types' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Resources' name='resources' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Resource Attributes' name='rsrc_attrs' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Attribute Values' name='attr_vals' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Hours of Operation' name='hours_of_operation' reporter:datatype='link' oils_persist:virtual='true'></field>
+               </fields>
+               <links>
+                       <link field='billing_address' reltype='has_a' class='aoa' key='id' map=''></link>
+                       <link field='holds_address' reltype='has_a' class='aoa' key='id' map=''></link>
+                       <link field='ou_type' reltype='has_a' class='aout' key='id' map=''></link>
+                       <link field='mailing_address' reltype='has_a' class='aoa' key='id' map=''></link>
+                       <link field='parent_ou' reltype='has_a' class='aou' key='id' map=''></link>
+                       <link field='ill_address' reltype='has_a' class='aoa' key='id' map=''></link>
+                       <link field='fiscal_calendar' reltype='has_a' class='acqfc' key='id' map=''></link>
+                       <link field='users' reltype='has_many' class='au' key='home_ou' map=''></link>
+                       <link field='closed_dates' reltype='has_many' class='aoucd' key='org_unit' map=''></link>
+                       <link field='children' reltype='has_many' class='aou' key='parent_ou' map=''></link>
+                       <link field='circulations' reltype='has_many' class='circ' key='circ_lib' map=''></link>
+                       <link field='settings' reltype='has_many' class='aous' key='org_unit' map=''></link>
+                       <link field='addresses' reltype='has_many' class='aoa' key='org_unit' map=''></link>
+                       <link field='checkins' reltype='has_many' class='circ' key='checkin_lib' map=''></link>
+                       <link field='workstations' reltype='has_many' class='aws' key='owning_lib' map=''></link>
+                       <link field='fund_alloc_pcts' reltype='has_many' class='acqfap' key='org' map=''></link>
+                       <link field='copy_location_orders' reltype='has_many' class='acplo' key='org' map=''></link>
+                       <link field='atc_prev_dests' reltype='has_many' class='atc' key='prev_dest' map=''></link>
+                       <link field='resv_requests' reltype='has_many' class='bresv' key='request_lib' map=''></link>
+                       <link field='resv_pickups' reltype='has_many' class='bresv' key='pickup_lib' map=''></link>
+                       <link field='rsrc_types' reltype='has_many' class='brt' key='owner' map=''></link>
+                       <link field='resources' reltype='has_many' class='brsrc' key='owner' map=''></link>
+                       <link field='rsrc_attrs' reltype='has_many' class='bra' key='owner' map=''></link>
+                       <link field='attr_vals' reltype='has_many' class='brav' key='owner' map=''></link>
+                       <link field='hours_of_operation' reltype='might_have' class='aouhoo' key='id' map=''></link>
+               </links>
+        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'>
+            <actions>
+                <create context_field='parent_ou' permission='CREATE_ORG_UNIT'></create>
+                <retrieve></retrieve>
+                <update context_field='id' permission='UPDATE_ORG_UNIT'></update>
+                <delete context_field='parent_ou' permission='DELETE_ORG_UNIT'></delete>
+            </actions>
+        </permacrud>
+       </class><class oils_obj:fieldmapper='money::billable_transaction' reporter:label='Billable Transaction' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='money.billable_xact' id='mbt'>
+               <fields oils_persist:sequence='money.billable_xact_id_seq' oils_persist:primary='id'>
+                       <field reporter:label='Transaction ID' name='id' reporter:datatype='id'></field>
+                       <field reporter:label='User' name='usr' reporter:datatype='link'></field>
+                       <field reporter:label='Transaction Finish Date/Time' name='xact_finish' reporter:datatype='timestamp'></field>
+                       <field reporter:label='Transaction Start Date/Time' name='xact_start' reporter:datatype='timestamp'></field>
+                       <field reporter:label='Unrecovered Debt' name='unrecovered' reporter:datatype='bool'></field>
+                       <field reporter:label='Grocery Billing link' name='grocery' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Circulation Billing link' name='circulation' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Billing Line Items' name='billings' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Payment Line Items' name='payments' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Billing Totals' name='billing_total' reporter:datatype='money' oils_persist:virtual='true'></field>
+                       <field reporter:label='Payment Totals' name='payment_total' reporter:datatype='money' oils_persist:virtual='true'></field>
+                       <field reporter:label='Payment Summary' name='summary' reporter:datatype='link' oils_persist:virtual='true'></field>
+               </fields>
+               <links>
+                       <link field='grocery' reltype='might_have' class='mg' key='id' map=''></link>
+                       <link field='circulation' reltype='might_have' class='circ' key='id' map=''></link>
+                       <link field='usr' reltype='has_a' class='au' key='id' map=''></link>
+                       <link field='payments' reltype='has_many' class='mp' key='xact' map=''></link>
+                       <link field='billings' reltype='has_many' class='mb' key='xact' map=''></link>
+                       <link field='billing_total' reltype='might_have' class='rxbt' key='xact' map=''></link>
+                       <link field='payment_total' reltype='might_have' class='rxpt' key='xact' map=''></link>
+                       <link field='summary' reltype='might_have' class='mbts' key='id' map=''></link>
+               </links>
+               <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'>
+                       <actions>
+                               <retrieve permission='VIEW_USER_TRANSACTIONS'>
+                                       <context field='home_ou' link='usr'></context>
+                               </retrieve>
+                       </actions>
+               </permacrud>
+       </class><class oils_obj:fieldmapper='money::user_summary' reporter:label='User Summary' controller='open-ils.cstore' oils_persist:tablename='money.usr_summary' id='mus'>
+               <fields oils_persist:sequence='' oils_persist:primary='usr'>
+                       <field name='balance_owed' reporter:datatype='money'></field>
+                       <field name='total_owed' reporter:datatype='money'></field>
+                       <field name='total_paid' reporter:datatype='money'></field>
+                       <field name='usr' reporter:datatype='link'></field>
+               </fields>
+               <links>
+                       <link field='usr' reltype='has_a' class='au' key='id' map=''></link>
+               </links>
+       </class><class reporter:label='Item' oils_persist:tablename='asset.copy' reporter:core='true' oils_obj:fieldmapper='asset::copy' controller='open-ils.cstore open-ils.pcrud' id='acp'>
+               <fields oils_persist:sequence='asset.copy_id_seq' oils_persist:primary='id'>
+                       <field reporter:label='Age Hold Protection' name='age_protect' reporter:datatype='link'></field>
+                       <field reporter:label='Alert Message' name='alert_message' reporter:datatype='text'></field>
+                       <field reporter:label='Barcode' name='barcode' reporter:datatype='text'></field>
+                       <field reporter:label='Call Number/Volume' name='call_number' reporter:datatype='link'></field>
+                       <field reporter:label='Circulation Type (MARC)' name='circ_as_type' reporter:datatype='text'></field>
+                       <field reporter:label='Circulating Library' name='circ_lib' reporter:datatype='org_unit'></field>
+                       <field reporter:label='Circulation Modifier' name='circ_modifier' reporter:datatype='link'></field>
+                       <field reporter:label='Can Circulate' name='circulate' reporter:datatype='bool'></field>
+                       <field reporter:label='Copy Number on Volume' name='copy_number' reporter:datatype='text'></field>
+                       <field reporter:label='Creation Date/Time' name='create_date' reporter:datatype='timestamp'></field>
+                       <field reporter:label='Active Date/Time' name='active_date' reporter:datatype='timestamp'></field>
+                       <field reporter:label='Creating User' name='creator' reporter:datatype='link'></field>
+                       <field reporter:label='Is Deleted' name='deleted' reporter:datatype='bool'></field>
+                       <field reporter:label='Dummy ISBN' name='dummy_isbn' reporter:datatype='text'></field>
+                       <field reporter:label='Is Deposit Required' name='deposit' reporter:datatype='bool'></field>
+                       <field reporter:label='Deposit Amount' name='deposit_amount' reporter:datatype='money'></field>
+                       <field reporter:label='Precat Dummy Author' name='dummy_author' reporter:datatype='text'></field>
+                       <field reporter:label='Precat Dummy Title' name='dummy_title' reporter:datatype='text'></field>
+                       <field reporter:label='Last Edit Date/Time' name='edit_date' reporter:datatype='timestamp'></field>
+                       <field reporter:label='Last Editing User' name='editor' reporter:datatype='link'></field>
+                       <field reporter:label='Fine Level' name='fine_level' reporter:datatype='int'></field>
+                       <field reporter:label='Is Holdable' name='holdable' reporter:datatype='bool'></field>
+                       <field reporter:label='Copy ID' name='id' reporter:datatype='id'></field>
+                       <field reporter:label='Loan Duration' name='loan_duration' reporter:datatype='int'></field>
+                       <field reporter:label='Shelving Location' name='location' reporter:datatype='link'></field>
+                       <field reporter:label='OPAC Visible' name='opac_visible' reporter:datatype='bool'></field>
+                       <field reporter:label='Price' name='price' reporter:datatype='money'></field>
+                       <field reporter:label='Is Reference' name='ref' reporter:datatype='bool'></field>
+                       <field reporter:label='Copy Status' name='status' reporter:datatype='link'></field>
+                       <field reporter:label='Copy Status Changed Time' name='status_changed_time' reporter:datatype='timestamp'></field>
+                       <field reporter:label='Is Mint Condition' name='mint_condition' reporter:datatype='bool'></field>
+                       <field reporter:label='Floating Group' name='floating' reporter:datatype='link'></field>
+                       <field reporter:label='Cost' name='cost' reporter:datatype='money'></field>
+                       <field reporter:label='Copy Notes' name='notes' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Stat-Cat entry maps' name='stat_cat_entry_copy_maps' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Circulations' name='circulations' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Aged (patronless) Circulations' name='aged_circulations' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Combined Aged and Active Circulations' name='all_circulations' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Total Circulations' name='total_circ_count' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Last Circulation Date' name='last_circ' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Holds' name='holds' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Statistical Category Entries' name='stat_cat_entries' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Monograph Parts' name='parts' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Peer Record Maps' name='peer_record_maps' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Peer Records' name='peer_records' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Last Captured Hold' name='last_captured_hold' reporter:datatype='link' oils_persist:virtual='true'></field>
+               </fields>
+               <links>
+                       <link field='age_protect' reltype='has_a' class='crahp' key='id' map=''></link>
+                       <link field='call_number' reltype='has_a' class='acn' key='id' map=''></link>
+                       <link field='location' reltype='has_a' class='acpl' key='id' map=''></link>
+                       <link field='editor' reltype='has_a' class='au' key='id' map=''></link>
+                       <link field='creator' reltype='has_a' class='au' key='id' map=''></link>
+                       <link field='status' reltype='has_a' class='ccs' key='id' map=''></link>
+                       <link field='circ_lib' reltype='has_a' class='aou' key='id' map=''></link>
+                       <link field='holds' reltype='has_many' class='ahcm' key='target_copy' map='hold'></link>
+                       <link field='stat_cat_entry_copy_maps' reltype='has_many' class='ascecm' key='owning_copy' map=''></link>
+                       <link field='notes' reltype='has_many' class='acpn' key='owning_copy' map=''></link>
+                       <link field='stat_cat_entries' reltype='has_many' class='ascecm' key='owning_copy' map='stat_cat_entry'></link>
+                       <link field='circulations' reltype='has_many' class='circ' key='target_copy' map=''></link>
+                       <link field='aged_circulations' reltype='has_many' class='acirc' key='target_copy' map=''></link>
+                       <link field='all_circulations' reltype='has_many' class='combcirc' key='target_copy' map=''></link>
+                       <link field='total_circ_count' reltype='might_have' class='erfcc' key='id' map=''></link>
+                       <link field='last_circ' reltype='might_have' class='rlc' key='id' map=''></link>
+                       <link field='circ_modifier' reltype='has_a' class='ccm' key='code' map=''></link>
+                       <link field='parts' reltype='has_many' class='acpm' key='target_copy' map='part'></link>
+                       <link field='peer_record_maps' reltype='has_many' class='bpbcm' key='target_copy' map=''></link>
+                       <link field='peer_records' reltype='has_many' class='bpbcm' key='target_copy' map='peer_record'></link>
+                       <link field='last_captured_hold' reltype='has_a' class='alhr' key='current_copy' map=''></link>
+                       <link field='floating' reltype='has_a' class='cfg' key='id' map=''></link>
+               </links>
+        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'>
+            <actions>
+                <create permission='CREATE_COPY'>
+                    <context field='owning_lib' link='call_number'></context>
+                </create>
+                <retrieve></retrieve>
+                <update permission='UPDATE_COPY'>
+                    <context field='owning_lib' link='call_number'></context>
+                </update>
+                <delete permission='DELETE_COPY'>
+                    <context field='owning_lib' link='call_number'></context>
+                </delete>
+            </actions>
+        </permacrud>
+       </class><class oils_obj:fieldmapper='container::biblio_record_entry_bucket_item' reporter:label='Biblio Record Entry Bucket Item' controller='open-ils.cstore' oils_persist:tablename='container.biblio_record_entry_bucket_item' id='cbrebi'>
+               <fields oils_persist:sequence='container.biblio_record_entry_bucket_item_id_seq' oils_persist:primary='id'>
+                       <field name='bucket' reporter:datatype='link'></field>
+                       <field name='id' reporter:datatype='id'></field>
+                       <field name='target_biblio_record_entry' reporter:datatype='link'></field>
+                       <field name='create_time' reporter:datatype='timestamp'></field>
+                       <field name='pos' reporter:datatype='int'></field>
+                       <field name='notes' reporter:datatype='link' oils_persist:virtual='true'></field>
+               </fields>
+               <links>
+                       <link field='target_biblio_record_entry' reltype='has_a' class='bre' key='id' map=''></link>
+                       <link field='bucket' reltype='has_a' class='cbreb' key='id' map=''></link>
+            <link field='notes' reltype='has_many' class='cbrebin' key='item' map=''></link>
+               </links>
+       </class><class oils_obj:fieldmapper='container::biblio_record_entry_bucket_item_note' reporter:label='Biblio Record Entry Bucket Item Note' controller='open-ils.cstore' oils_persist:tablename='container.biblio_record_entry_bucket_item_note' id='cbrebin'>
+               <fields oils_persist:sequence='container.biblio_record_entry_bucket_item_note_id_seq' oils_persist:primary='id'>
+                       <field name='id' reporter:datatype='id'></field>
+                       <field name='item' reporter:datatype='link'></field>
+                       <field name='note' reporter:datatype='text'></field>
+               </fields>
+               <links>
+                       <link field='item' reltype='has_a' class='cbrebi' key='id' map=''></link>
+               </links>
+       </class><class reporter:label='Hold Transit' oils_persist:tablename='action.hold_transit_copy' reporter:core='true' oils_obj:fieldmapper='action::hold_transit_copy' controller='open-ils.cstore open-ils.pcrud' id='ahtc'>
+               <fields oils_persist:sequence='action.transit_copy_id_seq' oils_persist:primary='id'>
+                       <field reporter:label='Copy Status at Transit' name='copy_status' reporter:datatype='link'></field>
+                       <field reporter:label='Destination Library' name='dest' reporter:datatype='org_unit'></field>
+                       <field reporter:label='Receive Date/Time' name='dest_recv_time' reporter:datatype='timestamp'></field>
+                       <field reporter:label='Hold requiring Transit' name='hold' reporter:datatype='link'></field>
+                       <field reporter:label='Transit ID' name='id' reporter:datatype='id'></field>
+                       <field reporter:label='Is Persistent?' name='persistant_transfer' reporter:datatype='bool'></field>
+                       <field reporter:label='Previous Stop' name='prev_hop' reporter:datatype='link'></field>
+                       <field reporter:label='Sending Library' name='source' reporter:datatype='org_unit'></field>
+                       <field reporter:label='Send Date/Time' name='source_send_time' reporter:datatype='timestamp'></field>
+                       <field reporter:label='Transited Copy' name='target_copy' reporter:datatype='link'></field>
+                       <field reporter:label='Base Transit' name='transit_copy' reporter:datatype='link' oils_persist:virtual='true'></field>
+                       <field reporter:label='Prev Destination Library' name='prev_dest' reporter:datatype='org_unit'></field>
+               </fields>
+               <links>
+                       <link field='transit_copy' reltype='might_have' class='atc' key='id' map=''></link>
+                       <link field='target_copy' reltype='has_a' class='acp' key='id' map=''></link>
+                       <link field='source' reltype='has_a' class='aou' key='id' map=''></link>
+                       <link field='copy_status' reltype='has_a' class='ccs' key='id' map=''></link>
+                       <link field='dest' reltype='has_a' class='aou' key='id' map=''></link>
+                       <link field='prev_dest' reltype='has_a' class='aou' key='id' map=''></link>
+                       <link field='hold' reltype='has_a' class='ahr' key='id' map=''></link>
+               </links>
+        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'>
+            <actions>
+                <create context_field='owner' permission='TRANSIT_COPY'>
+                    <context field='circ_lib' link='target_copy'></context>
+                </create>
+                <retrieve></retrieve>
+                <update context_field='dest source' permission='UPDATE_TRANSIT'></update>
+                <delete context_field='dest source' permission='DELETE_TRANSIT'></delete>
+            </actions>
+        </permacrud>
+       </class></IDL>
\ No newline at end of file
diff --git a/Open-ILS/src/Android/core/src/org/open_ils/test/org/evergreen_ils/views/MainActivityTest.java b/Open-ILS/src/Android/core/src/org/open_ils/test/org/evergreen_ils/views/MainActivityTest.java
new file mode 100644 (file)
index 0000000..a3cc19c
--- /dev/null
@@ -0,0 +1,91 @@
+package org.evergreen_ils.views;
+
+import android.app.Activity;
+import android.test.ActivityInstrumentationTestCase2;
+import android.util.Log;
+import com.android.volley.Request;
+import com.android.volley.RequestQueue;
+import com.android.volley.Response;
+import com.android.volley.VolleyError;
+import com.android.volley.toolbox.StringRequest;
+import org.evergreen_ils.net.VolleyWrangler;
+
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.locks.Condition;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
+
+/**
+ * Created by kenstir on 12/5/2015.
+ */
+public class MainActivityTest
+        extends ActivityInstrumentationTestCase2<MainActivity> {
+
+    private static final String TAG = MainActivityTest.class.getName();
+    private Activity mActivity;
+    private VolleyWrangler mVolley;
+    private String libraries_directory_url = "https://evergreen-ils.org/directory/libraries.json";
+    private String mStringResponse = null;
+    private String mError = null;
+    private Exception mException = null;
+    private final Lock mLock = new ReentrantLock();
+    private final Condition mFinishedCondition = mLock.newCondition();
+    private long mStartTime;
+
+    public MainActivityTest() {
+        super(MainActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mActivity = getActivity();
+        mVolley = VolleyWrangler.getInstance(mActivity);
+        mStartTime = System.currentTimeMillis();
+    }
+
+    private void signalFinished() {
+        mLock.lock();
+        mFinishedCondition.signal();
+        mLock.unlock();
+    }
+
+    private boolean waitForResponse() throws InterruptedException {
+        mLock.lock();
+        try {
+            return mFinishedCondition.await(1000, TimeUnit.MILLISECONDS);
+        } finally {
+            mLock.unlock();
+        }
+    }
+
+    private void handleResponse(String response) {
+        long duration_ms = System.currentTimeMillis() - mStartTime;
+        Log.d(TAG, "fetch took " + duration_ms + "ms");
+        mStringResponse = response;
+        Log.d(TAG, "response: " + response);
+        signalFinished();
+    }
+
+    public void testVolleyFetch_basic() throws InterruptedException {
+        RequestQueue q = VolleyWrangler.getInstance(mActivity).getRequestQueue();
+        StringRequest request = new StringRequest(Request.Method.GET, libraries_directory_url,
+                new Response.Listener<String>() {
+                    @Override
+                    public void onResponse(String response) {
+                        handleResponse(response);
+                    }
+                },
+                new Response.ErrorListener() {
+                    @Override
+                    public void onErrorResponse(VolleyError error) {
+                        mError = error.getMessage();
+                    }
+                });
+
+        // submit the request and await the response
+        q.add(request);
+        waitForResponse();
+        assertTrue(mStringResponse != null);
+    }
+}
\ No newline at end of file
index 99f8d99..db39fc3 100644 (file)
@@ -30,4 +30,7 @@
   <component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" default="false" assert-keyword="true" jdk-15="true" project-jdk-name="Android API 19 Platform" project-jdk-type="Android SDK">
     <output url="file://$PROJECT_DIR$/out" />
   </component>
+  <component name="ProjectType">
+    <option name="id" value="Android" />
+  </component>
 </project>
\ No newline at end of file
index de20113..452e722 100644 (file)
@@ -5,6 +5,7 @@
       <module fileurl="file://$PROJECT_DIR$/../support/v7/appcompat/appcompat.iml" filepath="$PROJECT_DIR$/../support/v7/appcompat/appcompat.iml" />
       <module fileurl="file://$PROJECT_DIR$/../core/core.iml" filepath="$PROJECT_DIR$/../core/core.iml" />
       <module fileurl="file://$PROJECT_DIR$/cwmars_app.iml" filepath="$PROJECT_DIR$/cwmars_app.iml" />
+      <module fileurl="file://$PROJECT_DIR$/tests/tests.iml" filepath="$PROJECT_DIR$/tests/tests.iml" />
     </modules>
   </component>
 </project>
\ No newline at end of file
diff --git a/Open-ILS/src/Android/cwmars_app/tests/AndroidManifest.xml b/Open-ILS/src/Android/cwmars_app/tests/AndroidManifest.xml
new file mode 100644 (file)
index 0000000..8316bd8
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- package name must be unique so suffix with "tests" so package loader doesn't ignore us -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="org.cwmars.tests"
+          android:versionCode="1"
+          android:versionName="1.0">
+    <!-- We add an application tag here just so that we can indicate that
+         this package needs to link against the android.test library,
+         which is needed when building test cases. -->
+    <application>
+        <uses-library android:name="android.test.runner"/>
+    </application>
+    <!--
+    This declares that this application uses the instrumentation test runner targeting
+    the package of org.cwmars.  To run the tests use the command:
+    "adb shell am instrument -w org.cwmars.tests/android.test.InstrumentationTestRunner"
+    -->
+    <instrumentation android:name="android.test.InstrumentationTestRunner"
+                     android:targetPackage="org.cwmars"
+                     android:label="Tests for org.cwmars"/>
+</manifest>
diff --git a/Open-ILS/src/Android/cwmars_app/tests/ant.properties b/Open-ILS/src/Android/cwmars_app/tests/ant.properties
new file mode 100644 (file)
index 0000000..e16c462
--- /dev/null
@@ -0,0 +1,18 @@
+# This file is used to override default values used by the Ant build system.
+#
+# This file must be checked into Version Control Systems, as it is
+# integral to the build system of your project.
+
+# This file is only used by the Ant script.
+
+# You can use this to override default values such as
+#  'source.dir' for the location of your java source folder and
+#  'out.dir' for the location of your output folder.
+
+# You can also use it define how the release builds are signed by declaring
+# the following properties:
+#  'key.store' for the location of your keystore and
+#  'key.alias' for the name of the key to use.
+# The password will be asked during the build when you use the 'release' target.
+
+tested.project.dir=E:\\src\\Evergreen\\Open-ILS\\src\\Android\\cwmars_app
diff --git a/Open-ILS/src/Android/cwmars_app/tests/build.xml b/Open-ILS/src/Android/cwmars_app/tests/build.xml
new file mode 100644 (file)
index 0000000..74cc33b
--- /dev/null
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="tests" default="help">
+
+    <!-- The local.properties file is created and updated by the 'android' tool.
+         It contains the path to the SDK. It should *NOT* be checked into
+         Version Control Systems. -->
+    <property file="local.properties"/>
+
+    <!-- The ant.properties file can be created by you. It is only edited by the
+         'android' tool to add properties to it.
+         This is the place to change some Ant specific build properties.
+         Here are some properties you may want to change/update:
+
+         source.dir
+             The name of the source directory. Default is 'src'.
+         out.dir
+             The name of the output directory. Default is 'bin'.
+
+         For other overridable properties, look at the beginning of the rules
+         files in the SDK, at tools/ant/build.xml
+
+         Properties related to the SDK location or the project target should
+         be updated using the 'android' tool with the 'update' action.
+
+         This file is an integral part of the build system for your
+         application and should be checked into Version Control Systems.
+
+         -->
+    <property file="ant.properties"/>
+
+    <!-- if sdk.dir was not set from one of the property file, then
+         get it from the ANDROID_HOME env var.
+         This must be done before we load project.properties since
+         the proguard config can use sdk.dir -->
+    <property environment="env"/>
+    <condition property="sdk.dir" value="${env.ANDROID_HOME}">
+        <isset property="env.ANDROID_HOME"/>
+    </condition>
+
+    <!-- The project.properties file is created and updated by the 'android'
+         tool, as well as ADT.
+
+         This contains project specific properties such as project target, and library
+         dependencies. Lower level build properties are stored in ant.properties
+         (or in .classpath for Eclipse projects).
+
+         This file is an integral part of the build system for your
+         application and should be checked into Version Control Systems. -->
+    <loadproperties srcFile="project.properties"/>
+
+    <!-- quick check on sdk.dir -->
+    <fail
+            message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through the ANDROID_HOME environment variable."
+            unless="sdk.dir"
+    />
+
+    <!--
+        Import per project custom build rules if present at the root of the project.
+        This is the place to put custom intermediary targets such as:
+            -pre-build
+            -pre-compile
+            -post-compile (This is typically used for code obfuscation.
+                           Compiled code location: ${out.classes.absolute.dir}
+                           If this is not done in place, override ${out.dex.input.absolute.dir})
+            -post-package
+            -post-build
+            -pre-clean
+    -->
+    <import file="custom_rules.xml" optional="true"/>
+
+    <!-- Import the actual build file.
+
+         To customize existing targets, there are two options:
+         - Customize only one target:
+             - copy/paste the target into this file, *before* the
+               <import> task.
+             - customize it to your needs.
+         - Customize the whole content of build.xml
+             - copy/paste the content of the rules files (minus the top node)
+               into this file, replacing the <import> task.
+             - customize to your needs.
+
+         ***********************
+         ****** IMPORTANT ******
+         ***********************
+         In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
+         in order to avoid having your file be overridden by tools such as "android update project"
+    -->
+    <!-- version-tag: 1 -->
+    <import file="${sdk.dir}/tools/ant/build.xml"/>
+
+</project>
diff --git a/Open-ILS/src/Android/cwmars_app/tests/project.properties b/Open-ILS/src/Android/cwmars_app/tests/project.properties
new file mode 100644 (file)
index 0000000..4ab1256
--- /dev/null
@@ -0,0 +1,14 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system edit
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+#
+# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
+#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
+
+# Project target.
+target=android-19
diff --git a/Open-ILS/src/Android/cwmars_app/tests/tests.iml b/Open-ILS/src/Android/cwmars_app/tests/tests.iml
new file mode 100644 (file)
index 0000000..5074df2
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="android" name="Android">
+      <configuration>
+        <option name="PACK_TEST_CODE" value="true" />
+        <option name="UPDATE_PROPERTY_FILES" value="true" />
+      </configuration>
+    </facet>
+  </component>
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/gen" isTestSource="false" generated="true" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="module" module-name="cwmars_app" scope="PROVIDED" />
+  </component>
+</module>
\ No newline at end of file