mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-07 18:25:23 +00:00
44918: Fix for ALF-14850 Opencmis getTotalNumItems doesn't return the correct result when setting MaxItemsPerPage - correctly report the max number of items 44927: ALF-16254 ("Leave Site" behaviour for group based site membership) 44931: Merged V3.4-BUG-FIX to V4.1-BUG-FIX (RECORD ONLY) 44930: Merged V3.4 (3.4.12) to V3.4-BUG-FIX 44929: Merged V4.1-BUG-FIX to V3.4 (3.4.12) 42118: ALF-15878 ALF-15741: generate doc and src zip for web-framework-commons and jlan 44939: Remove svn:mergeinfo 44985: Merged DEV to V4.1-BUG-FIX 44981: ALF-17085 : DB2: unexpected index found in database Correcting db structure after upgrade from 3.4. Optional statement was added. 44988: Merged DEV to V4.1-BUG-FIX 44937: ALF-16756: WebDAV: An error occurs on drag&drop content from local machine to alfresco when inbound move rule configured. Add check for content data length during determining existence of content on node. 44989: Merged PATCHES/V4.1.3 to V4.1-BUG-FIX 44984: Merged DEV to PATCHES/V4.1.3 44983: ALF-12425: Can't launch activiti workflow console from Share when external / ntlm / kerberos authentication is used. In activiti-admin.get.js generated an absolute URL . Use url.server + url.context instead of /alfresco. 44986: (RECORD ONLY) Merged DEV to PATCHES/V4.1.3 44937: ALF-16756: WebDAV: An error occurs on drag&drop content from local machine to alfresco when inbound move rule configured. Add check for content data length during determining existence of content on node. 44987: ALF-17331 60k Site Performance: Admin Console | Groups | Browse Groups (include sys groups): Pagination doesn't work correctly 45008: ALF-17300 - ConcurrentModificationException 45011: BDE-103 - Timezone test fail when not run from the UK (at least from Maven build) 45054: Merged from DEV to V4.1-BUG-FIX ALF-13312 - If the license does not exist, please specify in the error message 45055: Fix for ALF-13921. Description of the web project is not updated. 45063: Slight improvement to test code as part of ALF-15413. Changing test code to get companyHome from repositoryHelper rather than Lucene query, which doesn't work on a dev box with ill-configured SOLR/Lucene. 45170: Merged PATCHES\V4.1.3 to BRANCHES\DEV\V4.1-BUG-FIX 45161: Fix for ALF-17341 CLONE - Hyphen not handled correctly in cmis-alfresco search for Aspects/types : " no viable alternative at character 'a' " 45192: Merged BRANCHES/DEV/V3.4-BUG-FIX to BRANCHES/DEV/V4.1-BUG-FIX: 45187: (RECORD ONLY) Fix for ALF-16997 Discrepancies between standalone and cluster ehcache config 45312: Merged V4.0.2 (4.0.2.23-24) to V4.1-BUG-FIX (4.1.4) 44912: MNT-248 - 4.0.2.22 HOT FIX: Extra version is created saving changes in OpenOffice document via CIFS 44964: Merged DEV to PATCHES/V4.0.2 44963: MNT-263 : CLONE - CIFS: Image document version history lost after saving content in Preview on Mac Mountain Lion Fix for "Preview" shuffle scenario on Mac Mountain Lion. New ScenarioDoubleRenameShuffle scenario was added for pattern .*\.sb(-[A-Za-z0-9]*){2}. Unit test for correspomding scenario was added. 45037: Remove PID check from byte range lock list checks. MNT-266. 45286: MNT-277 - CIFS: Input/output error during saving ods file via OpenOffice. (Linux Specific) 45319: NORWEGIAN: Translation updates. 45338: Merged V4.1.3 (4.1.3) to V4.1-BUG-FIX (4.1.4) 45186: ALF-17303: fix naming mismatch when deploying alfresco-enterprise-repository artifactId to Maven 45247: Part 2: Better fix for ALF-16359 Fix SOLR logging in production and other environments 45265: ALF-17337 Read time out when browsing trash can 45298: ALF-17389: Merged: CLOUD1 to V4.1.3 45082: CLOUD-1139: Cloud feednotifier running on 2 boxes - FeedNotifierImpl modified to use reliable lock refresh - Added additional debug logging to AbstractUserNotifier just in case we have to prove duplicate entries are still being processed - For full debug logging set log4j.logger.org.alfresco.repo.activities.feed.FeedNotifier=debug - Happy New Year! 45355: ALF-17389: Fix build error 45357: Fix for ALF-17430 CMIS valid relationships do not check the source and target are valid CMIS docs or folders. 45363: Merge CLOUD1-BUG-FIX to V4.1-BUG-FIX 42576 : Job Locking of PostLookup 45367: Build fix corrections to merge 45363 45381: ALF-17389 : Implementing Activities Job Lock. 45416: Merged V4.1.3 (4.1.3) to V4.1-BUG-FIX (4.1.4) RECORD ONLY 45415: ALF-17389: Merged V4.1-BUG-FIX to V4.1.3 (4.1.3) << Previous merge was to the wrong branch >> 45363: Merge CLOUD1-BUG-FIX to V4.1-BUG-FIX 42576 : Job Locking of PostLookup 45367: Build fix corrections to merge 45363 45381: ALF-17389 : Implementing Activities Job Lock. 45424: Merged BRANCHES/DEV/BELARUS/V4.1-BUG-FIX-2013_01_05 to BRANCHES/DEV/V4.1-BUG-FIX: 45235: ALF-15604 : Oracle: schema reference files missing nvarchar2 column sizes 45425: Merged BRANCHES/DEV/BELARUS/V4.1-BUG-FIX-2013_01_05 to BRANCHES/DEV/V4.1-BUG-FIX: 45236: ALF-15604 : Oracle: schema reference files missing nvarchar2 column sizes 45480: ALF-17224: There will not be a "pageList" object in the freemarker model if a wiki page does not exist in a site and the wiki dashlet will cause an error on the site 45482: Fixed ALF-11036, applied the patch, ran the tests. 45485: ALF-17224: If the wiki page which was configured in the wiki dashlet will be deleted the dashlet will cause an error. The result of the call must be checked. 45513: MNT-279: Use binary search in cached authority search to cut down search time when a group contains an astronomical number of authorities - Experimental fix to cut down on severe profiling hit 45542: Fix for ALF-17443 - Contributors cannot edit their own discussion reply --This line, and th se below, will be ignored-- M root/projects/remote-api/source/java/org/alfresco/repo/web/scripts/discussion/ForumPostPut.java M root/projects/remote-api/source/java/org/alfresco/repo/web/scripts/discussion/DiscussionRestApiTest.java 45550: Merged V3.4-BUG-FIX to V4.1-BUG-FIX 44920: ALF-11315 removed date localisation on blogpost.lib.ftl dates and corrected date format on pubDate within postlist-rss.get.rss.ftl (iso8601 was being used instead of the required RFC822) 44936: Fix build 44967: Merged V3.4 to V3.4-BUG-FIX 44966: Merged PATCHES/V3.4.11 to V3.4 (3.4.12) 44891: ALF-17339: Merged DEV to V3.4.11 (3.4.11.2) 44877: MNT-265: possible improvement to Alfresco SQL query? - Add getOneTxnsByCommitTimeDescending function that makes efficient query to find most recent transaction in time range. 44951: ALF-17325 / MNT-274: Merged HEAD to PATCHES/V3.4.11 33015: ALF-11837 - Alfresco 4.0 SMTP Inbound does not work with messages without From and To Headers. 45191: Merged BRANCHES/V3.4 to BRANCHES/DEV/V3.4-BUG-FIX: 45172: Fixed ALF-16140: Blank filetype icon is displayed for tiff image 45436: Merged HEAD to BRANCHES/DEV/V3.4-BUG-FIX: 31107: Google Docs SSL error * Fixed SSL required error that has appeared recently. * Google seemingly no longer supports non secure access to GDoc API. * Default URL's fixed up. 45547: Merged V3.4 to V3.4-BUG-FIX 45166: ALF-17339: Merged V3.4.11 (3.4.11.4) to V3.4 (3.4.12) 45162: Merged DEV to V3.4.11 (3.4.11.4) 44877: MNT-275 Possible issue with MNT-265 fix - SQL from original HF should have used < rather than <= for upper time limit. 45230: Merged DEV to V3.4 (3.4.12) 45203: ALF-16992 : patch.fixAclInheritance is failing on sharedAclsThatDoNotInheritCorrectlyFromThePrimaryParent Ignoring of repeated ACL added 45233: Mark the NFS server as active during startup. ALF-16228. 45287: ALF-12145 Calendar autocomplete for advanced search form incorrectly handles zeros 45380: ALF-17461: There is different size of wcm-bootstrap-context.xml file from installer and archive - Replicated changes from ALF-11644 to Bitrock-installed copy of wcm-bootstrap-context.xml 45454: ALF-17396, ALF-13805: Merged V4.1-BUG-FIX (4.1.4) to V3.4 (3.4.12) Revision: 45452 Author: kroast Date: 16 January 2013 09:59:45 Message: Corrected config check for ALF-16413 - Share asks for Basic-Auth while not needed trying to access RSS feeds (thus breaking SSO). ---- Modified : /alfresco/BRANCHES/DEV/V4.1-BUG-FIX/root/projects/slingshot/source/java/org/alfresco/web/site/servlet/SlingshotFeedController.java 45491: Merge DEV to V3.4 (V3.4.12) 45473: ALF-11956: WCM accessibility DOJO time picker has been fixed to allow selection of hours and minutes, using keyboard. Missing JavaScript key event handlers have been added. CSS class checking has been fixed in 'alfresco.xforms.FocusResolver' in 'xforms.js' to support all versions of IE. Some other minor changes... 45543: Merged V4.1 to V3.4 44743: ALF-17533 / ALF-17117: Created article or publication cant be viewed on WQS site - Further corrections to locking to avoid deadlocks 44682: ALF-17512 / ALF-17118 WQS: Impossible to upload document to publications space - Only first part to do with the transformation failure has been committed. 44653: ALF-17533 / ALF-17117: Created article or publication cant be viewed on WQS site - Missed file from previous checkin 44652: ALF-17533/ ALF-17117: Created article or publication cant be viewed on WQS site - Fixes by Dmitry Vaserin - Removed unnecessary outer read locks from getRelatedAssets and getRelatedAsset to prevent deadlock - Correct markup error when node doesn't have tags 45546: ALF-17512: Corrections to property names by Pavel 45548: Merged V3.4 to V3.4-BUG-FIX (RECORD ONLY) 44977: Merged V3.4-BUG-FIX to V3.4 44936: Fix build 45553: Merged V3.4-BUG-FIX to V4.1-BUG-FIX (RECORD ONLY) 45523: Merged BRANCHES/DEV/V4.1-BUG-FIX to BRANCHES/DEV/V3.4-BUG-FIX: 45482: Fixed ALF-11036, applied the patch, ran the tests. 45557: Merged V3.4-BUG-FIX to V4.1-BUG-FIX (RECORD ONLY) 45556: Merged V3.4 to V3.4-BUG-FIX 45554: Latest translations from Gloria for revision 45205 45568: Merged PATCHES/V4.1.3 to V4.1-BUG-FIX 45421: Merged HEAD to PATCHES\V4.1.3 44243: Merged BRANCHES\DEV\AUTH_BRIDGE to HEAD 43735: Final part of ALF-14861 SOLR to scale for non-admin users in 100k sites and a subgroup of each of 1000 independent groupings with 1000 subgroups ALF-17489 ALF-17456 45428: ALF-17455 : BM-0013: SOAK01_04: Activities Feed Cleaner query runs for minutes 45489: ALF-17455 : BM-0013: SOAK01_04: Activities Feed Cleaner query runs for minutes 45569: Merged PATCHES/V4.1.3 to V4.1-BUG-FIX (RECORD ONLY) 45564: ALF-17492: WebScript errors must contain useful information - So doth Derek decree - Copied in Surf revision 1217 changes as class local to share.war to avoid pulling in any more untested Surf changes 45591: ALF-17465 (Document "social buttons/actions" not showing in document library page while document is being edited (locked)) 45601: ALF-17433 (Document detail version display incorrect document version when clicking on edit off line) 45611: ALF-17478 - MailMetadataExtracter does not store all Message-Recipient-Address 45622: Merged HEAD to BRANCHES/DEV/V4.1-BUG-FIX: 35614: ALF-17598: CLONE - Add range header support to the webDAV servlet 45633: ALF-17469: JSON message sent back to a client after a category creation is only partially JSON --This line, and th se below, will be ignored-- M category.post.json.ftl 45641: Fix non-ASCII character in source comment 45649: ALF-17556 (Share not redering URL correctly in description field) 45650: Manually merged HEAD to BRANCHES/DEV/V4.1-BUG-FIX: - Changes to StreamContent from merge of THOR1_SPRINTS to HEAD in r34698 45651: Merged HEAD to BRANCHES/DEV/V4.1-BUG-FIX: 45222: ALF-17599: CLONE - Support For HTTP Range Requests in Repository WebScripts - Added HttpRangeProcessor.processRange which takes a WebScriptResponse parameter instead of HttpServletResponse - Changed HttpRangeProcessor.processSingeRange and HttpRangeProcessor.processMultiRange to accept a generic Object parameter then cast to the appropriate WebScriptResponse or HttpServletResponse - Added Javadoc to HttpRangeProcessor.processRange - Changed StreamContent.streamContentImpl to add code from BaseDownloadContentServlet which does the work of processing the range header from the request - Changed StreamContent.streamContentImpl method signature to accept nodeRef and propertyQName parameters needed for multi-range requests - Modified methods which override or call StreamContent.streamContentImpl for new method signature, passing in nodeRef and propertyQName or nulls where appropriate 45655: Merged DEV to V4.1-BUG-FIX (4.1.4) 45565: ALF-17503 : Lucene search with skipcount > hits fails when RM is installed Return a length=0 if a difference of values (count of finded results and results, that need to skip) is < 0 45672: ALF-17452 (Status can't be updated with a blank status) 45682: ALF-17444: Transformation of Outlook files (.msg) doesn't work ootb 45751: Merged DEV to VC4.1-BUG-FIX (4.1.4) 45748: ALF-17517: Document does not revert to previous version if certain rule is applied to the parent folder. Check node existance on ActionExecuterAbstractBase execution. Add unit test for case when inbound rule executed on node that was checked in. 45758: ALF-12264: Fixed issue with pooled-tasks for groups with same name across tenants 45761: Block r45756 from being merged to V4.1-BUG-FIX 45765: Fix for ALF-17153 FTS query parser FTSQueryParser is not debuggable 45810: ALF-17520: Open Document templates are not tranformed properly for thumbnail and preview generation 45828: Additional fix for ALF-17153 FTS query parser FTSQueryParser is not debuggable 45857: ALF-17516 (SHARE: Admin console of users and groups) 45873: Remove so-called intermittent test category, so that only RepositoryStartupTest remains as a gatekeeper 45903: ALF-16611 (When opening My Pages filter, a link to the renamed document becomes red) 45906: ALF-17515: Wrong mimetype name in mimetype-map.xml - Changed macroEnabled to macroenabled 45913: ALF-17462 (In Alfresco explorer invitation to a site does not show the correct options) 45921: Fix for ALF-17421 If a property is both multi-valued and multilingual a ClassCastException is thrown when Solr tries to index the property - support multi-valued ML text but not content 45926: Fix for ALF-17602 lucene.defaultAnalyserResourceBundleName is not injected anywhere in the spring config 46024: Merged V4.1.3 (4.1.3) to V4.1-BUG-FIX (4.1.4) 45585: ALF-17303: alfresco-platform-distribution was not deployed properly to Maven repo 45621: Removed svn:mergeinfo. A 1.7 client should do this automatically. 45669: Fix ALF-17582 - BM-0013: JMeter: Run 02: MT ContentStore caching is not thread safe 45670: Fix ALF-17589 - BM-0013: JMeter: Run 02: CMISAbstractDictionaryService caching of DictionaryRegistry is not thread safe 45692: Config option for ALF-17526 BM-0013: JMeter: Run 02: Improve efficiency of services for SOLRAPIClient.getNodesMetaData - preloading can be controlled + removed incorrect use of the secondary cache that could pull in stale data 45705: Reverted Config option for ALF-17526 BM-0013: JMeter: Run 02: Improve efficiency of services for SOLRAPIClient.getNodesMetaData - preloading can be controlled + removed incorrect use of the secondary cache that could pull in stale data 45716: Fix for ALF-17594 SolrTracker: CMIS model diff (show 1 repeated diff) => CMIS dictionary re-init x2 (every 15 sec) - only refresh the CMIS dictionary if there was an actual model put 45755: Extra support to make clear what causes any difference between SOLR reports ALF-17588 BM-0013: JMeter: Run 02: Deviation was detected in full index check reports for SOLR nodes. - also added RETRY command to retry indexing any nodes that failed with errors. 45803: Fix for ALF-17490 Solr indexation problem with certain acls on a customer environment - AclsGet respects the maximum acls requested and does not silently truncate toe 1024 45829: GERMAN: Translation updates based on EN r45262 45830: SPANISH: Translation updates based on EN r45262 45831: FRENCH: Translation updates based on EN r45262 45832: ITALIAN: Translation updates based on EN r45262 45833: JAPANESE: Translation updates based on EN r45262 45834: DUTCH: Translation updates based on EN r45262 45835: RUSSIAN: Translation updates based on EN r45262 45836: CHINESE: Translation updates based on EN r45262 45858: Fix ALF-17634 -on startup FeedNotifier fetches all people slowly - switch from GetChildren CQ -> GetPeople CQ 45859: Fix ALF-17634 -on startup FeedNotifier fetches all people slowly - reverse fix for this test ... for now, until we re-implement the deprecated method and fix the test case ;-) 45951: Fix for ALF-17687 BM-0013: Soak: Run 02: SolrJSONResultSet must preload nodes - added node preload 45952: SiteServiceImplTest: Added check that size limiting of results is working (and other minor cleanup) 45953: Fixed ALF-17702: BM-0013: Soak: Run 02: getCachedChildAuthorities is not caching results - getChildAssocs specifically checks for 'members' associations (was eliminated by code) - Cache negative results i.e. when there are no children 45969: Part fix for ALF-17526 BM-0013: Soak: Run 02: SOLRAPIClient.getNodesMetaData does N+1 calls to NodeDAO - prependPaths caches nodes for the next layer 45998: Part 2 ALF-17526 BM-0013: Soak: Run 02: SOLRAPIClient.getNodesMetaData does N+1 calls to NodeDAO - make sure bulk node load works and that assocs are cached 45999: Alternative implementation for ALF-17719 BM-0013: Soak: Run 03: Contained authorities cache warmup times are restrictive - bridge table is the default for hasAuthority() - configurable on AuthorityServiceImpl 46000: ALF-17574 BM-0013: JMeter: Run 02: Blocked threads on PDFParser.parse - Found two blocking points in PdfBox to do with loading fonts from the class path (this was the main cause) and the PDFOperator access to a Synchronised map (identified above by Derek). - Note in 1.7.0 of PDFBox generally no font was loaded, but under 1.6.0 it was. This may be a bug in 1.7.0 46001: ALF-17722: Merged V3.4 (3.4.12) to V4.1.3 (4.1.3) 45629: ALF-17536: Stack Specific: Can't transform pdf to jpg - Added TRACE to log env properties using log4j.logger.org.alfresco.util.exec.RuntimeExec=trace 45667: ALF-17536 Can't transform multi page pdf to jpg - issue was introduced by ALF-15436 Alfresco 3.4c + Share + TIFF preview only shows the first page 46018: Merged HEAD to PATCHES/V4.1.3 41904: Fixes bugs uncovered by JDK 7 upgrade - nodeService's interceptors depended on nodeService, resulting in some 'interesting' interceptor ordering in the chain (3 * the normal number in a random order). Now we use a lazy interceptor to break the cycle. - When the Content Language was en_GB and an MLText property contained {en_US, en_GB} it would return the en_US one, not taking country codes into account when available 46023: Follow on to previous check in. Fix up evil cloud sync override of "nodeService" to also not suffer from a cyclic dependency! 46034: Merged V3.4-BUG-FIX (3.4.13) to V4.1-BUG-FIX (4.1.4) 45745: Merge V3.4 (3.4.12) to V3.4-BUG-FIX (3.4.13) 45629: ALF-17536: Stack Specific: Can't transform pdf to jpg - Added TRACE to log env properties using log4j.logger.org.alfresco.util.exec.RuntimeExec=trace 45667: ALF-17536 Can't transform multi page pdf to jpg - issue was introduced by ALF-15436 Alfresco 3.4c + Share + TIFF preview only shows the first page 45724: ALF-17533 CLONE - Created article or publication cant be viewed on WQS site - Further change required to avoid deadlock 45743: Correction to AuditComponentTest - Test was reporting "Incorrect number of audit entries after failed login expected:<1000> but was:<XXX>" where XXX was less than 1000. This was because results was being cleared if all all audit failures were not available in the first loop. The results needed to cleared before the first loop rather than in every loop. For example an XXX value of 830 would simply indicate that the first loop had received 170 audit results and that a second loop was required to get the rest. 45754: Merged V3.4 (3.4.12) to V3.4-BUG-FIX (3.4.13) 45747: Correction to AuditComponentTest - Okay last commit did not work. Try just waiting a bit longer than a second if we don't have all records. 45976: Merged DEV to V3.4-BUG-FIX 45925: ALF-16992 : patch.fixAclInheritance is failing on sharedAclsThatDoNotInheritCorrectlyFromThePrimaryParent Added a detection on cyclic loop for "inherits from" field. 46037: Merged V4.1.3 (4.1.3) to V4.1-BUG-FIX (4.1.4) 46033: Build fixes 46032: ALF-17628 (No information is displayed in My Activities and Site Activities dashlets for content creation) 46095: 46100: ALF-17773, ALF-17774, ALF-17775, ALF-17776: Merged V4.0.2 (4.0.2.26) to V4.1-BUG-FIX (4.1.4) 45469: MNT-280: Merge from HEAD to V4.0.2 (4.0.2.25) 43617: Fix for ALF-16795 CMIS 0.8 TCK - load of large content fails 45875: Merged DEV to V4.0.2 (4.0.2.26) 45874: MNT-282: Mbean error stemming from cmis create. Synchronize initiating ContentStore. Add tenant name to object name of ContentStore MBean for preventing overriding of tenant MBeans. 45904: MNT-285 Content Stream Errors during CMIS load test (Continuation of MNT-280) - Added 'advice' above retrying transactions to supply a ReusableContentStream 45910: MNT-285 Content Stream Errors during CMIS load test (Continuation of MNT-280) - Added unit tests - tests both new TempFileProvider method and AlfrescoCmisStreamInterceptor - Corrections to interceptor 46104: ALF-15843: Upgrade swftools back to 0.9.2 46109: Merged RECORD ONLY V4.1.3 (4.1.3) to V4.1-BUG-FIX (4.1.4) 46106: Merged V4.1-BUG-FIX (4.1.4) to V4.1.3 (4.1.3) 46100: ALF-17773, ALF-17774, ALF-17775, ALF-17776: Merged V4.0.2 (4.0.2.26) to V4.1-BUG-FIX (4.1.4) 45469: MNT-280: Merge from HEAD to V4.0.2 (4.0.2.25) 43617: Fix for ALF-16795 CMIS 0.8 TCK - load of large content fails 45875: Merged DEV to V4.0.2 (4.0.2.26) 45874: MNT-282: Mbean error stemming from cmis create. Synchronize initiating ContentStore. Add tenant name to object name of ContentStore MBean for preventing overriding of tenant MBeans. 45904: MNT-285 Content Stream Errors during CMIS load test (Continuation of MNT-280) - Added 'advice' above retrying transactions to supply a ReusableContentStream 45910: MNT-285 Content Stream Errors during CMIS load test (Continuation of MNT-280) - Added unit tests - tests both new TempFileProvider method and AlfrescoCmisStreamInterceptor - Corrections to interceptor 46087: Merge V4.1-BUG-FIX (4.1.4) to V4.1.3 (4.1.3) 45480: ALF-17224: There will not be a "pageList" object in the freemarker model if a wiki page does not exist in a site and the wiki dashlet will cause an error on the site 46112: Merged (4.1.3) to V4.1-BUG-FIX (4.1.4) 46048: ALF-17727 - BM-0013: Soak: Run 03: Site creation leads to contention on sites container - disable auditable behaviour on "sites" container (when creating a site) 46050: ALF-17727 - BM-0013: Soak: Run 03: Site creation leads to contention on sites container - disable auditable behaviour on "sites" container (when deleting a site) 46055: ALF-17729 - BM-0013: Soak: Run 03: ADMRemoteStore optimization to reduce contention on share folders - disable auditable behaviour on parent folder (when creating / deleting file) 46059: Fixed ALF-17756: Thumbnails are being indexed - Add the cm:indexControl aspect to thumbnails at creation time - Also prevent timestamp propagation when adding or removing thumbnails 46077: Following on from rev 46059 (ALF-17756): Fixed up the mock NodeService.createNode call as we now pass in indexControl properties 46078: Build fix for SiteServiceImplTest.testGroupMembership(SiteServiceImplTest.java:1308) 46079: Additional fix for out of transaction tests 46124: Reverse merge << Will A. did not intend to commit this >> 46095: 46159: Fixed ALF-16889, Enabled cookie support for /wcs/api/login, independent from SSOAuthenticationFilter, on by default. 46165: Fix for ALF-17787 - Site Members 'All Members' link should not run query immediately 46169: Fix for ALF-17787 - Site Members 'All Members' link should not run query immediately - missing file 46184: Refactoring a test class to use JUnit Rules - as part of attempt to reproduce ALF-17797. Using JUnit Rules like this will make it much easier to switch users between test methods. Checking in separately from future work as this check-in is a pure refactor. 46185: ALF-17503 : Lucene search with skipcount > hits fails when RM is installed Fix build failures - Correct tests which expected -ve number of rows returned in a resultset 46192: Enhancement to JUnit Rule TemporaryNodes.java as required by fix for ALF-17797. This check-in enhances TemporaryNodes to allow for the easy creation of specific named quick files. Previously you could only easily create a quick file selected by MIME type. Now you can use e.g. 'quickCorrupt.pdf' to get that specific file. 46194: Fix for ALF-17797. AddFailedThumbnailActionExecuter is failing. This check-in adds a test case that reproduces the issue and a fix. The fix was to have the AddFailedThumbnailActionExecuter action runAs system. This is consistent with the behaviour of the create-thumbnail action itself. There is no way via the ActionService to run an action (in this case a compensating action) as a nominated user, and therefore I have had to change the implementation of AddFailedThumbnailActionExecuter.executeImpl so that it always runs-as system. 46202: ALF-17644: Document version was increased after canceling editing. - Also a better fix for ALF-17167 46208: ALF-17517 Document does not revert to previous version if certain rule is applied to the parent folder. - fix build failures (may still be one left) - Not all actions are node based 46230: Merged V3.4-BUG-FIX to V4.1-BUG-FIX (4.1.4) 46227: Filter repository test resources from alfresco.war 46272: ALF-17841: Upgrade 4.0 --> 4.1.4 ClassCastException from OnPropertyUpdateRuleTrigger - Only listen for updates of single-valued content properties and cope with it previously being multi-valued (as can be the case with the devious license property) 46279: ALF-17810: Imagemagick requires installation of Visual C++ redistributables - x86 VC++ 2008 SP1 redistributables now installed to support ImageMagick 46354: ALF-10569: Reversing r32622 as it was due to an invalid interpretation of a Microsoft spec and should be unnecessary for the correct support of WebDAV 'dead properties'. - Correct fix about to be merged in from V3.4-BUG-FIX 46360: ALF-17697: Create proper source jars, to deploy to Maven repository 46361: Merged V3.4-BUG-FIX to V4.1-BUG-FIX 45756: ALF-14722: Repeat merge of V4.1-BUG-FIX to V3.4-BUG-FIX - previous merge in r43028 did not bring over all required changes 42902: Merged DEV to V4.1-BUG-FIX 42519: ALF-13588: Google Doc failed to authenticate after incorrect password being entered for google account Add ability to unregister class behaviours. Unregister googledocs behaviours when subsystem stops. 45948: Merged DEV/WABSON/V4.1-GOOGLEDOCS-BUG-FIX to DEV/V3.4-BUG_FIX 45898: ALF-17704 / ALF-16167: 'Edit Offline' checks out document in Google docs - Edit in Google Docs action is now decoupled from Edit Offline action - The checkout to Google Docs is only performed if a new parameter 'gdc' is set as a paramter when calling the action web script - This paramter causes the web script to call a new method checkoutToGoogleDocs() on ScriptNode if the parameter is set - The new method simply calls the existing checkout() method after setting a custom property on the transaction - The Google Docs policies now check for the presence of this transaction property before sending the document to Google 45976: ALF-17876: Merged DEV to V3.4-BUG-FIX 45925: ALF-16992 : patch.fixAclInheritance is failing on sharedAclsThatDoNotInheritCorrectlyFromThePrimaryParent Added a detection on cyclic loop for "inherits from" field. 46041: ALF-17877: Merged DEV to V3.4-BUG-FIX (with corrections) 46013: ALF-17662 : The deleted via Sharepoint document is not removed from Alfresco but hidden aspect is added for it Documents marked with sys:hidden aspect should be invisible through SPP protocol and should be treated as nonexistent. 46054: ALF-17878 / ALF-17633 add alfresco-mmt.jar in the SDK distribution 46173: ALF-17879 / ALF-17806: Merged PATCHES/V3.4.10 to V3.4-BUG-FIX 46099: MNT-293: Merged V4.0-BUG-FIX to PATCHES/V3.4.10 37969: Fixes for: ALF-12772 'Path not found' error in Share if user has no permissions to parent folders in breadcrumb ALF-14527 Share - Error to display documents if user has no access to the parent folder - Share now correctly supports accessing documents and folders (and details page actions) where the user does not have Read permissions on the parent node. 46101: MNT-293: AccessDenied using CMIS when user does not have access to parent folder - Fix by Vasily 46125: MNT-293: Correct Kev's logic to do permission checks after resolving a path as system 46127: Merged V3.4 to PATCHES/V3.4.10 45743: Correction to AuditComponentTest - Test was reporting "Incorrect number of audit entries after failed login expected:<1000> but was:<XXX>" where XXX was less than 1000. This was because results was being cleared if all all audit failures were not available in the first loop. The results needed to cleared before the first loop rather than in every loop. For example an XXX value of 830 would simply indicate that the first loop had received 170 audit results and that a second loop was required to get the rest. 45747: Correction to AuditComponentTest - Okay last commit did not work. Try just waiting a bit longer than a second if we don't have all records. 46195: ALF-17880 / ALF-17378: Web content is not editable after cancelling the Edit Web Content Wizard - Fix by Andrey 46227: Filter repository test resources from alfresco.war 46324: Merged DEV to V3.4-BUG-FIX (with improvements) 45602: ALF-10569 / ALF-17519 : SPP is setting residual properties with an unknown name space (urn:schemas-microsoft-com) Implemented special case for handling dead webdav properties. New webdav:object aspect was introduced. It is used to store all dead properties that may be set on resource. 46353: ALF-17881 / ALF-17272: TooManyClauses error due to syntax error in the query generated from UIComponentSelector - Fixed typo in Lucene query generation introduced in r20310 46362: ALF-17876: Re-fix typo introduced in V3.4-BUG-FIX merge 46363: Merged V3.4-BUG-FIX to V4.1-BUG-FIX (RECORD ONLY) 46285: Merged V4.1-BUG-FIX to V3.4-BUG-FIX 46279: ALF-17810: Imagemagick requires installation of Visual C++ redistributables - x86 VC++ 2008 SP1 redistributables now installed to support ImageMagick 46325: ALF-17863: Merged V4.1-BUG-FIX to V3.4-BUG-FIX 43649: ALF-16756: WebDAV: An error occurs on drag&drop content from local machine to alfresco when inbound move rule configured. 43651: ALF-16756: Fixed typos - I took this code in good faith! 44988: Merged DEV to V4.1-BUG-FIX 44937: ALF-16756: WebDAV: An error occurs on drag&drop content from local machine to alfresco when inbound move rule configured. Add check for content data length during determining existence of content on node. 46395: Merged V4.1.3 (4.1.3) to V4.1-BUG-FIX (4.1.4) 46121: Fixed code warnings 46123: Further improvements on ALF-17702: BM-0013: Soak: Run 02: getCachedChildAuthorities is not caching result - Reduced cache entry size - Removed binary sort search for authority entries - PS: This is one of the most heavily used code paths in the system 46153: Merged DEV to V4.1.3 (4.1.3) << Lots of other changes in addition to merged code>> 46093: ALF-16149 : CLONE - User search retrieves all users from the DB regardless of search criteria - Re-implemented deprecated method PersonServiceImpl.getPeople(...) to use getPeopleCQ or FTS search - Replaced calls to deprecated getPeople with calls to other one where it would end up being called anyway. - Fixed PersonServiceTests - Fixed GetPeopleCannedQuery to use totalResultCount - tests failed otherwise - Added warning to PersonService.getPeopleFilteredByProperty(...) if PROP_FIRSTNAME, PROP_LASTNAME, PROP_USERNAME were not being used. This was the one place that 'could' called the deprecated getPeople(...) method with other properties. Other properties are not included in the search values. 46178: ALF-17796 - BM-0013: Soak: Run 04: Contention on folder 'user' containing users - disable auditable behaviour on parent folders (see also ALF-17729) 46244: Fix for ALF-17801 BM-0013: Soak: Run 04: ConcurrentModificationException in AbstractLuceneQueryParser - consistently name anonymous constraints defined on properties 46265: ALF-17799 - BM-0013: Soak: Run 04: Regular timeouts getting site memberships - initial fix: make sure limit cut-off is also applied when processing "groups to expand" 46286: Fix for ALF-17801 BM-0013: Soak: Run 04: ConcurrentModificationException in AbstractLuceneQueryParser - build fixes for 1) Anonymous over-ridden constraints defined to contain the wrong property definition (no matter) 2) but above causes name collision on over-ridden anonymous constraints on properties 3) fix -over ride order to set inherited property definition info before over-ridding the property 46290: ALF-17799 - BM-0013: Soak: Run 04: Regular timeouts getting site memberships - fix SiteActivityTest fallout (and adhere to current API contract) 46315: ALF-17788: WebSphere: QueryException occurs during the clean startup - Corrected regression where FeedNotifier tries to scroll past the end of a result set 46316: ALF-17702: Fixed regression of MNT-279 fix - Avoid sequential search across massive user sets when evaluating ACLs 46350: Update Maven POM files - Upgrade version to 4.1.3 - Upgrade pdfbox to 1.7.0-alfresco-20130130, to catch up after r46000 fixing ALF-17574 46370: ALF-17613: Merged V4.0.2 (4.0.2.27) to V4.1.3 (4.1.3) 46368: MNT-298 HF - Replace file by drag-and-drop over CIFS on Mac OS X and passthru/LDAP-AD gets "is in use" message and deletes the file 46421: Fix for ALF-17886. DeleteRenditionActionExecuter Acces is denied. With test of course. 46438: ALF-17622 (Activities with Google Docs are not displayed in My Site Activities and Site Activities dashlets) 46445: Fix for ALF-17327 Cannot retrieve documents with a Japanese keyword. 46457: ALF-17904 (GoogleDocs action doesn't work in doclib view) 46482: Fix for ALF-17858. NPE in formService webscript. 46497: Fix for ALF-15371 Instances of java.util.Map interface cannot be accessed in JavaScript The fix was to have getDefaultValue(Class) return the map.toString. It was previously returning null. 46533: ALF-17286: SPP (Cluster specific):Document workspace is not browseable via Share if alfresco.host is pointing to balancer host - Ensure that concurrency conditions from AclDAO get propagagedby NodeDAO 46540: Fix for ALF-17397 searching based on property value that contains dashes doesn't work in a crossloanguage context using Solr - fixed - also added support for query/index time analysis control for the default cross-language analyser. - Not required to resolve the bug but may be useful to reduce query complexity (e.g. do not generate concatenated tokens for query) which could have been used as a work around for this bug if available. 46546: Merged DEV to V4.1-BUG-FIX 46494: ALF-17899 TempFileProvider.createTempFile() is not debugable Added debug logs. 46562: ALF-17917: Corrected internationalization of Imap Home folder - Unfinished business from ALF-15700 46563: Fix for ALF-17572 - Grey background in 'Google Docs Theme' when uploading files with IE8 46564: Fix for ALF-17150 - Edit Online action missing in Share for some mime types (incorrect mimetype for PowerPoint files with SLDM extension) 46565: ALF-17917: Correction to previous fix - Use distinct key spaces.imap_home.childname, because spaces.imapConfig.childname was already being used for other purposes 46568: Fix for ALF-17757 and ALF-1101 RSS Dashlet cannot display RSS feed produced by Shareӳ blog / RSS Feed Dashlet unable to read internal Alfesco Share site RSS Feeds - Fix implementation from Will Abson NOTE: there is a cavet, suggest SSO style config as per ALF-16413 to avoid basic auth pop-up when displaying some feeds. 46624: removed 46625: Undo last commit 46626: Merged V4.1.1 (4.1.1.21) to V4.1-BUG-FIX (4.1.4) 46602: ALF-17953: Alfresco constantly running full GCs - Possible fix to TikaPoweredContentTransformer to make it wrap FileContentReaders as TikaInputStreams which can be cast to Files and appear not to need reading into memory in their entirety in uncompressed form! - Fix also required to TikaOfficeDetectParser to avoid it wrapping a TikaInputStream unnecessarily 46629: RECORD ONLY Merged V4.1.3 (4.1.3) to V4.1-BUG-FIX (4.1.4) 46622: ALF-17968: Merged V4.0.2 (4.1.1.21) to V4.1.3 (4.1.3) 46602: ALF-17953: Alfresco constantly running full GCs - Possible fix to TikaPoweredContentTransformer to make it wrap FileContentReaders as TikaInputStreams which can be cast to Files and appear not to need reading into memory in their entirety in uncompressed form! - Fix also required to TikaOfficeDetectParser to avoid it wrapping a TikaInputStream unnecessarily 46607: ALF-17953 Alfresco constantly running full GC's - some java.lang.threads holding around 9Gb of memory - Added transformation limits to the 8 TikaPoweredContentTransformer based transformers, so that the maxSourceSizeKBytes can be set for each transformer and for each source mimetype used by each transformer. - maxSourceSizeKBytes set to 40MB for the newer 2007 MS office types (4 char ext). 46619: ALF-17953 Alfresco constantly running full GC's - some java.lang.threads holding around 9Gb of memory - Changed maxSourceSizeKBytes values from 40MB back to -1 for the newer 2007 MS office types (4 char ext). 46636: Fix for ALF-13442 Tomcat memory leak warnings occur during the shutdown 46679: Merged DEV to V4.1-BUG-FIX (4.1.4) 46659: ALF-17631 : Errors/Exception during stress tests of CMIS GET children RetryingTransactionHelper has now ability to handle pre-configured exceptions as retriable in addition to default list of exceptions. 46683: Merge PATCHES/V4.1.3 to V4.1-BUG-FIX (4.1.4) 46637: Update the notice.txt and licenses with the latest modifications Add Microsoft Visual C++ 2008 Redistributable Package in the notice.txt 46693: RECORD ONLY Merged V3.4-BUG-FIX (3.4.13) to V4.1-BUG-FIX (4.1.4) 46692: ALF-17984: Merged V3.4.12 (3.4.12.2) to V3.4-BUG-FIX (3.4.13) 46680: MNT-307: DEV to V3.4.12 (3.4.12.2) 46659: ALF-17631 : Errors/Exception during stress tests of CMIS GET children RetryingTransactionHelper has now ability to handle pre-configured exceptions as retriable in addition to default list of exceptions. - Change to opencmis-context.xml on DEV (based on 4.1.4) was made to cmis-ws-context.xml on V3.4.12 46694: Merged DEV to V4.1-BUG-FIX (4.1.4) 46686: ALF-17631 : Errors/Exception during stress tests of CMIS GET children Unit test add for RetryingTransactionHelper to test extra exceptions are rertied correctly. 46724: create-site.css and create-site.js will be included in the header (share-config.xml) therefore there is no reason to include them in the freemarker templates. 46759: Merged DEV to V4.1-BUG-FIX (4.1.4) 46734: ALF-17873 Missing versionLabel property after Version2ServiceImpl.restore() 1. In Version2ServiceImpl.restore() to props Map was added ContentModel.PROP_VERSION_LABEL property. 2. In VersionServiceImplTest.testRestore() was added the check that ContentModel.PROP_VERSION_LABEL property is correct. 46760: Merged DEV to V4.1-BUG-FIX (4.1.4) 46433: ALF-16883: Incorrect message occurred when delete Workspace if document is locked. Not possible to change MS Office message - have improved alfresco log message 46782: ALF-17317 4.0.2.23 HOT FIX: OpenOffice server conversion failed 46783: ALF-17546 OOXMLThumbnailContentTransformer is not registered to handle special Office document types, such as templates and macro-enabled variants of document / template 46797: Restore missing mergeinfo accidentally removed in r46562 46799: ALF-17546 OOXMLThumbnailContentTransformer is not registered to handle special Office document types, such as templates and macro-enabled variants of document / template - typo in mimetype case 46916: ALF-17174 pdf2swf supports converting N first pages but alfresco does not support it via the pageLimit 46933: ALF-8144: Drastically improving performance using lazy-loaded WorklfowTask properties and path + improved the way share pages workflow-tasks to prevent building full model for unneeded tasks 46946: ALF-18000: Startup script depends on the working directory where it is run - Changed vti.properties to vti.server.ssl.keystore=${dir.keystore}/vti.ssl.keystore 46995: Improvement related to ALF-17380 Solr queries running slowly - reader -> acl cache is built on demand (and warmed via authority warming) - this will mean it is not eagerly built for the archive store where it would be little used, and could be configured off for this case 47032: ALF-17804: cmisatom URL (opencmis backed by Apache Chemistry OpenCMIS) does not support External authentication - Now it supports all kinds of authentication because it sits behind Alfresco's authentication filters - Fix researched by Alex Mukha 47033: Merged V3.4-BUG-FIX to V4.1-BUG-FIX 46453: ALF-18122 / ALF-17708: Incorrect behavior of "Show/Hide Breadcrumb" button when RM is installed - ContentService.getReader() now triggers a transaction retry if content is found to have disappeared under its feet due to eager content cleaning 46495: ALF-18122 / ALF-17708: Incorrect behavior of "Show/Hide Breadcrumb" button when RM is installed - lower impact fix will only throw retryable exception if stream is accessed 46822: ALF-18123: Merge Dev to V3.4-BUG-FIX ALF-17408 : Content is not displayed in imap folder after recovering 46823: ALF-18124 / ALF-18091: Fix for MNT-311 - authentication challenge not present when users open direct links below /share/proxy/alfresco/cmis/i 46927: ALF-18124 / ALF-18091: Merged PATCHES/V3.4.10 to V3.4-BUG-FIX 46925: Merged V3.4-BUG-FIX to PATCHES/V3.4.10 (with correction) 46823: Fix for MNT-311 - authentication challenge not present when users open direct links below /share/proxy/alfresco/cmis/*/content 46942: ALF-17990: Fix security descriptors for new FileFolderService isHidden setHidden methods 47021: ALF-18125: Merged DEV to V3.4-BUG-FIX 46825: ALF-17681 : Lucene Search queries with PATH doesn't work in tenants A JUnit test was implemented to show that the PATH Lucene indexes are not created correctly for tenants. 46968: ALF-17681 : Lucene Search queries with PATH doesn't work in tenants The creation of PATH indexes is now made in context of multi tenant System user to run the reindexing process correctly in unauthenticated threads. 47034: Merged V3.4-BUG-FIX to V4.1-BUG-FIX (RECORD ONLY) 47030: ALF-16102: Merged PATCHES/V3.4.10 to V3.4-BUG-FIX (RECORD ONLY) 41755: ALF-16013: Merged V4.1-BUG-FIX to PATCHES/V3.4.10 41539: ALF-15899: Inbound email does not support multiple recipient folders - Fix by Dmitry Vaserin 47031: ALF-18121: Merged PATCHES/V3.4.11 to V3.4-BUG-FIX 46978: MNT-320: Merged HEAD to PATCHES/V3.4.11: 36623: ALF-10243: form-service date-control now allows configuring only to send date-component of date-only formfields (timezone and time-component is reset server-side to prevent unnecesairy timezone-issues) 47035: Merged PATCHES/V4.1.3 to V4.1-BUG-FIX 46398: Fix for ALF-17889 Alfresco failing as constraint in extension model cannot be defined - use the namespace from the containing model and not the over-ridden property. 46426: Merged BRANCHES/DEV/V4.1-BUG-FIX to PATCHES/V4.1.3: 46421: Fix for ALF-17886. DeleteRenditionActionExecuter Acces is denied. 46446: ALF-17864: BM-0013: Soak: Run 05: SiteService.listSites(username, size) performance (=> via listSitesImpl) - isAuthorityContained made to prune its search drastically - it caches hits and misses speeding up the search in a deeply nested group hierarchy such as SAP's - To avoid huge memory impact with lots of duplicate copies of authority names a pool of authority names is shared across all threads - getContainingAuthoritesInZone reinstated for site listing as it warms the same caches as the ACLs - Derek's latest tests with the changes applied showed a good speed up 46501: ALF-17929: BM-0013: Soak: Run 06: /api/sites/{shortname}/memberships/{authorityname} / SiteServiceImpl.getMembersRoleInfo performance poor - Possible fix to regression caused by ALF-16254 - A very inefficient route was being taken towards checking a user's indirect site role 46502: ALF-17930: BM-0013: Soak: Run 06: ConcurrentModificationException in AuthorityDAOImpl - Don't try to mutate the set returned by getContainingAuthorities() 46503: ALF-17929: BM-0013: Soak: Run 06: /api/sites/{shortname}/memberships/{authorityname} / SiteServiceImpl.getMembersRoleInfo performance poor - Further optimizations to prevent unnecessary recursion in AuthorityDAOImpl.listAuthorities() 46506: ALF-17929: BM-0013: Soak: Run 06: /api/sites/{shortname}/memberships/{authorityname} / SiteServiceImpl.getMembersRoleInfo performance poor - Fixed typo producing invalid membership results 46627: ALF-17967: Error in org.alfresco.repo.workflow.WorkflowServiceImpl.getPooledTasks on StartUp. - Logic error in org.alfresco.repo.workflow.WorkflowServiceImpl.getPooledTasks() introduced in ALF-14861 / r45421 - Rather than fixing the screwy logic (which I think would cause a major performance hit) I'm reinstating the 4.1.2 "cut off after 100 groups" behaviour 46630: Merged 4.1-BUG-FIX to PATCHES/V4.1.3 46562: ALF-17917: Corrected internationalization of Imap Home folder - Unfinished business from ALF-15700 46565: ALF-17917: Correction to previous fix - Use distinct key spaces.imap_home.childname, because spaces.imapConfig.childname was already being used for other purposes 46779: ALF-17967: Error in org.alfresco.repo.workflow.WorkflowServiceImpl.getPooledTasks on StartUp. - Improved fix that uses the bridge table cache if it is available - Groups queried for pooled tasks still limited to 100 by default but can be configured with system.workflow.maxAuthoritiesForPooledTasks - Overall number of results can be cut off with system.workflow.maxPooledTasks 47013: Fix HiddenAspect to NOT use permission-checking NodeService - Should fix ALF-17605: CLONE - Severe performance problems with Group ACL checking under stress test 47018: (RECORD ONLY) Disabled EmailServiceImplTest.testEmailContributorsAuthority pending ALF-17979 47036: Merged PATCHES/V4.1.2 to V4.1-BUG-FIX 46180: Merged DEV to PATCHES/V4.1.2 46170: MNT-299 : CLONE - Activity feeds get not generated in private sites for added files if username in LDAP-AD contains uppercase letters Improved debug logging for Activity Feed and Activity Post DAOs. 47037: ALF-17973 (Incorrect name (title.single/title.multi) for "cloud target selection" window when RM is installed) 47042: RM-601 (Copy/Move dialog causes an error in firebug console) 47047: DE: Translation update based on EN r46507 47048: SPANISH: Translation update based on EN r46507 47049: FRENCH: Translation update based on EN r46507 47050: ITALIAN: Translation update based on EN r46507 47051: NORWEGIAN: Translation update based on EN r46507 47052: JAPANESE: Translation update based on EN r46507 47089: ALF-17089 (Displaying Url Name instead of site Name in Select form) 47102: New Norwegian translations from Gloria plus Bitrock configuration to enable them 47110: ALF-10243: Merged V3.4-BUG-FIX to V4.1-BUG-FIX 47105: ALF-18121: Merged PATCHES/V3.4.11 to V3.4-BUG-FIX 47040: MNT-323: Fixed issue with passing empty due date when starting workflow 47101: MNT-320: also applied fix to wcmquickstart module 47109: ALF-18121: Merged PATCHES/V3.4.11 to V3.4-BUG-FIX 47106: MNT-320: Merged V4.1-BUG-FIX to PATCHES/V3.4.11 41010: ALF-15697: Not possible to start workflow not specifying the Due Date - Regression caused by ALF-10243 47135: DUTCH: Translation update based on EN r46507 47137: RUSSIAN: Translation update based on EN r46507 47138: CHINESE: Translation update based on EN r46507 47141: Fix for ALF-17979 EmailServiceImplTest intermittently failing 47147: Part 2 of ALF-17979 EmailServiceImplTest intermittently failing - fix related cache to avoid any future issue 47148: ALF-17804: Fix NPE 47171: ALF-18060: removing obsolete expensive sorting and preventing too many variable-queries to be performed when listing COMPLETED WorkflowTask git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@47186 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
5859 lines
470 KiB
Java
5859 lines
470 KiB
Java
/*
|
|
* Copyright (C) 2005-2010 Alfresco Software Limited.
|
|
*
|
|
* This file is part of Alfresco
|
|
*
|
|
* Alfresco is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Lesser General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* Alfresco is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public License
|
|
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
package org.alfresco.opencmis.search;
|
|
|
|
import java.io.InputStream;
|
|
import java.io.Serializable;
|
|
import java.lang.reflect.InvocationTargetException;
|
|
import java.lang.reflect.Method;
|
|
import java.text.Collator;
|
|
import java.text.SimpleDateFormat;
|
|
import java.util.ArrayList;
|
|
import java.util.Calendar;
|
|
import java.util.Collection;
|
|
import java.util.Collections;
|
|
import java.util.Date;
|
|
import java.util.GregorianCalendar;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Locale;
|
|
import java.util.Map;
|
|
|
|
import org.alfresco.model.ContentModel;
|
|
import org.alfresco.opencmis.BaseCMISTest;
|
|
import org.alfresco.opencmis.dictionary.CMISAbstractDictionaryService;
|
|
import org.alfresco.opencmis.dictionary.PropertyDefinitionWrapper;
|
|
import org.alfresco.opencmis.dictionary.TypeDefinitionWrapper;
|
|
import org.alfresco.opencmis.mapping.BaseTypeIdProperty;
|
|
import org.alfresco.opencmis.mapping.CheckinCommentProperty;
|
|
import org.alfresco.opencmis.mapping.ContentStreamIdProperty;
|
|
import org.alfresco.opencmis.mapping.ContentStreamLengthProperty;
|
|
import org.alfresco.opencmis.mapping.ContentStreamMimetypeProperty;
|
|
import org.alfresco.opencmis.mapping.CreationDateProperty;
|
|
import org.alfresco.opencmis.mapping.DirectProperty;
|
|
import org.alfresco.opencmis.mapping.FixedValueProperty;
|
|
import org.alfresco.opencmis.mapping.IsImmutableProperty;
|
|
import org.alfresco.opencmis.mapping.IsLatestMajorVersionProperty;
|
|
import org.alfresco.opencmis.mapping.IsLatestVersionProperty;
|
|
import org.alfresco.opencmis.mapping.IsMajorVersionProperty;
|
|
import org.alfresco.opencmis.mapping.IsVersionSeriesCheckedOutProperty;
|
|
import org.alfresco.opencmis.mapping.ModificationDateProperty;
|
|
import org.alfresco.opencmis.mapping.NameProperty;
|
|
import org.alfresco.opencmis.mapping.ObjectIdProperty;
|
|
import org.alfresco.opencmis.mapping.ObjectTypeIdProperty;
|
|
import org.alfresco.opencmis.mapping.ParentProperty;
|
|
import org.alfresco.opencmis.mapping.PathProperty;
|
|
import org.alfresco.opencmis.mapping.VersionLabelProperty;
|
|
import org.alfresco.opencmis.mapping.VersionSeriesCheckedOutByProperty;
|
|
import org.alfresco.opencmis.mapping.VersionSeriesCheckedOutIdProperty;
|
|
import org.alfresco.opencmis.mapping.VersionSeriesIdProperty;
|
|
import org.alfresco.opencmis.search.CMISQueryOptions.CMISQueryMode;
|
|
import org.alfresco.repo.dictionary.M2Model;
|
|
import org.alfresco.repo.node.BaseNodeServiceTest;
|
|
import org.alfresco.repo.search.MLAnalysisMode;
|
|
import org.alfresco.repo.search.impl.lucene.analysis.DateTimeAnalyser;
|
|
import org.alfresco.repo.search.impl.parsers.CMISLexer;
|
|
import org.alfresco.repo.search.impl.parsers.CMISParser;
|
|
import org.alfresco.repo.search.impl.parsers.FTSQueryException;
|
|
import org.alfresco.repo.search.impl.querymodel.Order;
|
|
import org.alfresco.repo.search.impl.querymodel.QueryModelException;
|
|
import org.alfresco.repo.search.impl.querymodel.QueryOptions.Connective;
|
|
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
|
|
import org.alfresco.service.cmr.repository.ContentData;
|
|
import org.alfresco.service.cmr.repository.ContentWriter;
|
|
import org.alfresco.service.cmr.repository.MLText;
|
|
import org.alfresco.service.cmr.repository.NodeRef;
|
|
import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter;
|
|
import org.alfresco.service.cmr.repository.datatype.Duration;
|
|
import org.alfresco.service.cmr.security.PermissionService;
|
|
import org.alfresco.service.namespace.QName;
|
|
import org.alfresco.util.CachingDateFormat;
|
|
import org.alfresco.util.ISO9075;
|
|
import org.antlr.runtime.ANTLRStringStream;
|
|
import org.antlr.runtime.CharStream;
|
|
import org.antlr.runtime.CommonTokenStream;
|
|
import org.antlr.runtime.RecognitionException;
|
|
import org.antlr.runtime.tree.CommonTree;
|
|
import org.apache.chemistry.opencmis.commons.PropertyIds;
|
|
import org.apache.chemistry.opencmis.commons.enums.BaseTypeId;
|
|
import org.apache.chemistry.opencmis.commons.enums.Cardinality;
|
|
import org.apache.chemistry.opencmis.commons.enums.PropertyType;
|
|
import org.apache.chemistry.opencmis.commons.exceptions.CmisBaseException;
|
|
import org.springframework.extensions.surf.util.I18NUtil;
|
|
|
|
/**
|
|
* @author andyh
|
|
*/
|
|
public class QueryTest extends BaseCMISTest
|
|
{
|
|
private static final String TEST_NAMESPACE = "http://www.alfresco.org/test/cmis-query-test";
|
|
|
|
|
|
|
|
QName typeThatRequiresEncoding = QName.createQName(TEST_NAMESPACE, "type-that-requires-encoding");
|
|
|
|
QName aspectThatRequiresEncoding = QName.createQName(TEST_NAMESPACE, "aspect-that-requires-encoding");
|
|
|
|
QName propertyThatRequiresEncoding = QName.createQName(TEST_NAMESPACE, "property-that-requires-encoding");
|
|
|
|
QName extendedContent = QName.createQName(TEST_NAMESPACE, "extendedContent");
|
|
|
|
QName singleTextBoth = QName.createQName(TEST_NAMESPACE, "singleTextBoth");
|
|
|
|
QName singleTextUntokenised = QName.createQName(TEST_NAMESPACE, "singleTextUntokenised");
|
|
|
|
QName singleTextTokenised = QName.createQName(TEST_NAMESPACE, "singleTextTokenised");
|
|
|
|
QName multipleTextBoth = QName.createQName(TEST_NAMESPACE, "multipleTextBoth");
|
|
|
|
QName multipleTextUntokenised = QName.createQName(TEST_NAMESPACE, "multipleTextUntokenised");
|
|
|
|
QName multipleTextTokenised = QName.createQName(TEST_NAMESPACE, "multipleTextTokenised");
|
|
|
|
QName singleMLTextBoth = QName.createQName(TEST_NAMESPACE, "singleMLTextBoth");
|
|
|
|
QName singleMLTextUntokenised = QName.createQName(TEST_NAMESPACE, "singleMLTextUntokenised");
|
|
|
|
QName singleMLTextTokenised = QName.createQName(TEST_NAMESPACE, "singleMLTextTokenised");
|
|
|
|
QName multipleMLTextBoth = QName.createQName(TEST_NAMESPACE, "multipleMLTextBoth");
|
|
|
|
QName multipleMLTextUntokenised = QName.createQName(TEST_NAMESPACE, "multipleMLTextUntokenised");
|
|
|
|
QName multipleMLTextTokenised = QName.createQName(TEST_NAMESPACE, "multipleMLTextTokenised");
|
|
|
|
QName singleFloat = QName.createQName(TEST_NAMESPACE, "singleFloat");
|
|
|
|
QName multipleFloat = QName.createQName(TEST_NAMESPACE, "multipleFloat");
|
|
|
|
QName singleDouble = QName.createQName(TEST_NAMESPACE, "singleDouble");
|
|
|
|
QName multipleDouble = QName.createQName(TEST_NAMESPACE, "multipleDouble");
|
|
|
|
QName singleInteger = QName.createQName(TEST_NAMESPACE, "singleInteger");
|
|
|
|
QName multipleInteger = QName.createQName(TEST_NAMESPACE, "multipleInteger");
|
|
|
|
QName singleLong = QName.createQName(TEST_NAMESPACE, "singleLong");
|
|
|
|
QName multipleLong = QName.createQName(TEST_NAMESPACE, "multipleLong");
|
|
|
|
QName singleBoolean = QName.createQName(TEST_NAMESPACE, "singleBoolean");
|
|
|
|
QName multipleBoolean = QName.createQName(TEST_NAMESPACE, "multipleBoolean");
|
|
|
|
QName singleDate = QName.createQName(TEST_NAMESPACE, "singleDate");
|
|
|
|
QName multipleDate = QName.createQName(TEST_NAMESPACE, "multipleDate");
|
|
|
|
QName singleDatetime = QName.createQName(TEST_NAMESPACE, "singleDatetime");
|
|
|
|
QName multipleDatetime = QName.createQName(TEST_NAMESPACE, "multipleDatetime");
|
|
|
|
private int content_only_count;
|
|
|
|
private int doc_count = 0;
|
|
|
|
private int folder_count = 0;
|
|
|
|
private NodeRef base;
|
|
|
|
private NodeRef f0;
|
|
|
|
private NodeRef f1;
|
|
|
|
private NodeRef f2;
|
|
|
|
private NodeRef f3;
|
|
|
|
private NodeRef f4;
|
|
|
|
private NodeRef f5;
|
|
|
|
private NodeRef f6;
|
|
|
|
private NodeRef f7;
|
|
|
|
private NodeRef f8;
|
|
|
|
private NodeRef f9;
|
|
|
|
private NodeRef c0;
|
|
|
|
private NodeRef c1;
|
|
|
|
private NodeRef c2;
|
|
|
|
private NodeRef c3;
|
|
|
|
private NodeRef c4;
|
|
|
|
private NodeRef c5;
|
|
|
|
private NodeRef c6;
|
|
|
|
private NodeRef c7;
|
|
|
|
private NodeRef c8;
|
|
|
|
private NodeRef c9;
|
|
|
|
private NodeRef c10;
|
|
|
|
private Date date1;
|
|
|
|
private Date date2;
|
|
|
|
private Date date0;
|
|
|
|
private long contentLength0;
|
|
|
|
private String contentUrl0;
|
|
|
|
private boolean usesDateTimeAnalyser;
|
|
|
|
@Override
|
|
public void setUp() throws Exception
|
|
{
|
|
super.setUp();
|
|
|
|
// If FTS kicks in at the wrong moment, it can skew the test results. Temporarily disable it during the test
|
|
this.luceneFTS.pause();
|
|
|
|
DataTypeDefinition dataType = dictionaryService.getDataType(DataTypeDefinition.DATETIME);
|
|
String analyserClassName = dataType.resolveAnalyserClassName();
|
|
usesDateTimeAnalyser = analyserClassName.equals(DateTimeAnalyser.class.getCanonicalName());
|
|
|
|
base = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName.createQName("cm", "Base Folder", namespaceService), ContentModel.TYPE_FOLDER).getChildRef();
|
|
nodeService.setProperty(base, ContentModel.PROP_NAME, "Base Folder");
|
|
folder_count++;
|
|
|
|
f0 = nodeService.createNode(base, ContentModel.ASSOC_CONTAINS, QName.createQName("cm", "Folder 0", namespaceService), ContentModel.TYPE_FOLDER).getChildRef();
|
|
nodeService.setProperty(f0, ContentModel.PROP_NAME, "Folder 0");
|
|
folder_count++;
|
|
|
|
permissionService.setPermission(f0, "cmis", PermissionService.READ, true);
|
|
|
|
f1 = nodeService.createNode(base, ContentModel.ASSOC_CONTAINS, QName.createQName("cm", "Folder 1", namespaceService), ContentModel.TYPE_FOLDER).getChildRef();
|
|
nodeService.setProperty(f1, ContentModel.PROP_NAME, "Folder 1");
|
|
folder_count++;
|
|
|
|
f2 = nodeService.createNode(base, ContentModel.ASSOC_CONTAINS, QName.createQName("cm", "Folder 2", namespaceService), ContentModel.TYPE_FOLDER).getChildRef();
|
|
nodeService.setProperty(f2, ContentModel.PROP_NAME, "Folder 2");
|
|
folder_count++;
|
|
|
|
f3 = nodeService.createNode(base, ContentModel.ASSOC_CONTAINS, QName.createQName("cm", "Folder 3", namespaceService), ContentModel.TYPE_FOLDER).getChildRef();
|
|
nodeService.setProperty(f3, ContentModel.PROP_NAME, "Folder 3");
|
|
folder_count++;
|
|
|
|
f4 = nodeService.createNode(f0, ContentModel.ASSOC_CONTAINS, QName.createQName("cm", "Folder 4", namespaceService), ContentModel.TYPE_FOLDER).getChildRef();
|
|
nodeService.setProperty(f4, ContentModel.PROP_NAME, "Folder 4");
|
|
folder_count++;
|
|
|
|
f5 = nodeService.createNode(f0, ContentModel.ASSOC_CONTAINS, QName.createQName("cm", "Folder 5", namespaceService), ContentModel.TYPE_FOLDER).getChildRef();
|
|
nodeService.setProperty(f5, ContentModel.PROP_NAME, "Folder 5");
|
|
folder_count++;
|
|
|
|
f6 = nodeService.createNode(f5, ContentModel.ASSOC_CONTAINS, QName.createQName("cm", "Folder 6", namespaceService), ContentModel.TYPE_FOLDER).getChildRef();
|
|
nodeService.setProperty(f6, ContentModel.PROP_NAME, "Folder 6");
|
|
folder_count++;
|
|
|
|
f7 = nodeService.createNode(f6, ContentModel.ASSOC_CONTAINS, QName.createQName("cm", "Folder 7", namespaceService), ContentModel.TYPE_FOLDER).getChildRef();
|
|
nodeService.setProperty(f7, ContentModel.PROP_NAME, "Folder 7");
|
|
folder_count++;
|
|
|
|
f8 = nodeService.createNode(f7, ContentModel.ASSOC_CONTAINS, QName.createQName("cm", "Folder 8", namespaceService), ContentModel.TYPE_FOLDER).getChildRef();
|
|
nodeService.setProperty(f8, ContentModel.PROP_NAME, "Folder 8");
|
|
folder_count++;
|
|
|
|
f9 = nodeService.createNode(f8, ContentModel.ASSOC_CONTAINS, QName.createQName("cm", "Folder 9", namespaceService), ContentModel.TYPE_FOLDER).getChildRef();
|
|
nodeService.setProperty(f9, ContentModel.PROP_NAME, "Folder 9'");
|
|
folder_count++;
|
|
|
|
Map<QName, Serializable> properties0 = new HashMap<QName, Serializable>();
|
|
MLText desc0 = new MLText();
|
|
desc0.addValue(Locale.ENGLISH, "Alfresco tutorial");
|
|
desc0.addValue(Locale.US, "Alfresco tutorial");
|
|
properties0.put(ContentModel.PROP_CONTENT, new ContentData(null, "text/plain", 0L, "UTF-8", Locale.UK));
|
|
properties0.put(ContentModel.PROP_DESCRIPTION, desc0);
|
|
properties0.put(ContentModel.PROP_TITLE, desc0);
|
|
properties0.put(ContentModel.PROP_NAME, "Alfresco Tutorial");
|
|
properties0.put(ContentModel.PROP_CREATED, new Date());
|
|
c0 = nodeService.createNode(f0, ContentModel.ASSOC_CONTAINS, QName.createQName("cm", "Alfresco Tutorial", namespaceService), ContentModel.TYPE_CONTENT, properties0)
|
|
.getChildRef();
|
|
ContentWriter writer0 = contentService.getWriter(c0, ContentModel.PROP_CONTENT, true);
|
|
writer0.setEncoding("UTF-8");
|
|
writer0.putContent("The quick brown fox jumped over the lazy dog and ate the Alfresco Tutorial, in pdf format, along with the following stop words; a an and are"
|
|
+ " as at be but by for if in into is it no not of on or such that the their then there these they this to was will with: "
|
|
+ " and random charcters \u00E0\u00EA\u00EE\u00F0\u00F1\u00F6\u00FB\u00FF");
|
|
contentLength0 = writer0.getSize();
|
|
contentUrl0 = DefaultTypeConverter.INSTANCE.convert(ContentData.class, nodeService.getProperty(c0, ContentModel.PROP_CONTENT)).getContentUrl();
|
|
nodeService.addAspect(c0, ContentModel.ASPECT_TITLED, null);
|
|
nodeService.addAspect(c0, ContentModel.ASPECT_OWNABLE, null);
|
|
nodeService.setProperty(c0, ContentModel.PROP_OWNER, "andy");
|
|
content_only_count++;
|
|
doc_count++;
|
|
|
|
Map<QName, Serializable> properties1 = new HashMap<QName, Serializable>();
|
|
MLText desc1 = new MLText();
|
|
desc1.addValue(Locale.ENGLISH, "One");
|
|
desc1.addValue(Locale.US, "One");
|
|
properties1.put(ContentModel.PROP_CONTENT, new ContentData(null, "text/plain", 0L, "UTF-8", Locale.UK));
|
|
properties1.put(ContentModel.PROP_DESCRIPTION, desc1);
|
|
properties1.put(ContentModel.PROP_TITLE, desc1);
|
|
properties1.put(ContentModel.PROP_NAME, "AA%");
|
|
properties1.put(ContentModel.PROP_CREATED, new Date());
|
|
c1 = nodeService.createNode(f1, ContentModel.ASSOC_CONTAINS, QName.createQName("cm", "One", namespaceService), ContentModel.TYPE_CONTENT, properties1).getChildRef();
|
|
ContentWriter writer1 = contentService.getWriter(c1, ContentModel.PROP_CONTENT, true);
|
|
writer1.setEncoding("UTF-8");
|
|
writer1.putContent("One Zebra Apple");
|
|
nodeService.addAspect(c1, ContentModel.ASPECT_TITLED, null);
|
|
content_only_count++;
|
|
doc_count++;
|
|
|
|
Map<QName, Serializable> properties2 = new HashMap<QName, Serializable>();
|
|
MLText desc2 = new MLText();
|
|
desc2.addValue(Locale.ENGLISH, "Two");
|
|
desc2.addValue(Locale.US, "Two");
|
|
properties2.put(ContentModel.PROP_CONTENT, new ContentData(null, "text/plain", 0L, "UTF-8", Locale.UK));
|
|
properties2.put(ContentModel.PROP_DESCRIPTION, desc2);
|
|
properties2.put(ContentModel.PROP_TITLE, desc2);
|
|
properties2.put(ContentModel.PROP_NAME, "BB_");
|
|
properties2.put(ContentModel.PROP_CREATED, new Date());
|
|
c2 = nodeService.createNode(f2, ContentModel.ASSOC_CONTAINS, QName.createQName("cm", "Two", namespaceService), ContentModel.TYPE_CONTENT, properties2).getChildRef();
|
|
ContentWriter writer2 = contentService.getWriter(c2, ContentModel.PROP_CONTENT, true);
|
|
writer2.setEncoding("UTF-8");
|
|
writer2.putContent("Two Zebra Banana");
|
|
nodeService.addAspect(c2, ContentModel.ASPECT_TITLED, null);
|
|
content_only_count++;
|
|
doc_count++;
|
|
Map<QName, Serializable> properties3 = new HashMap<QName, Serializable>();
|
|
MLText desc3 = new MLText();
|
|
desc3.addValue(Locale.ENGLISH, "Three");
|
|
desc3.addValue(Locale.US, "Three");
|
|
properties3.put(ContentModel.PROP_CONTENT, new ContentData(null, "text/plain", 0L, "UTF-8", Locale.UK));
|
|
properties3.put(ContentModel.PROP_DESCRIPTION, desc3);
|
|
properties3.put(ContentModel.PROP_TITLE, desc3);
|
|
properties3.put(ContentModel.PROP_NAME, "CC\\");
|
|
properties3.put(ContentModel.PROP_CREATED, new Date());
|
|
c3 = nodeService.createNode(f3, ContentModel.ASSOC_CONTAINS, QName.createQName("cm", "Three", namespaceService), ContentModel.TYPE_CONTENT, properties3).getChildRef();
|
|
ContentWriter writer3 = contentService.getWriter(c3, ContentModel.PROP_CONTENT, true);
|
|
writer3.setEncoding("UTF-8");
|
|
writer3.putContent("Three Zebra Clementine");
|
|
nodeService.addAspect(c3, ContentModel.ASPECT_TITLED, null);
|
|
content_only_count++;
|
|
doc_count++;
|
|
|
|
Map<QName, Serializable> properties4 = new HashMap<QName, Serializable>();
|
|
MLText desc4 = new MLText();
|
|
desc4.addValue(Locale.ENGLISH, "Four");
|
|
desc4.addValue(Locale.US, "Four");
|
|
properties4.put(ContentModel.PROP_CONTENT, new ContentData(null, "text/plain", 0L, "UTF-8", Locale.UK));
|
|
properties4.put(ContentModel.PROP_DESCRIPTION, desc4);
|
|
properties4.put(ContentModel.PROP_TITLE, desc4);
|
|
properties4.put(ContentModel.PROP_NAME, "DD\'");
|
|
properties4.put(ContentModel.PROP_CREATED, new Date());
|
|
c4 = nodeService.createNode(f4, ContentModel.ASSOC_CONTAINS, QName.createQName("cm", "Four", namespaceService), ContentModel.TYPE_CONTENT, properties4).getChildRef();
|
|
ContentWriter writer4 = contentService.getWriter(c4, ContentModel.PROP_CONTENT, true);
|
|
writer4.setEncoding("UTF-8");
|
|
writer4.putContent("Four zebra durian");
|
|
nodeService.addAspect(c4, ContentModel.ASPECT_TITLED, null);
|
|
content_only_count++;
|
|
doc_count++;
|
|
|
|
Map<QName, Serializable> properties5 = new HashMap<QName, Serializable>();
|
|
MLText desc5 = new MLText();
|
|
desc5.addValue(Locale.ENGLISH, "Five");
|
|
desc5.addValue(Locale.US, "Five");
|
|
properties5.put(ContentModel.PROP_CONTENT, new ContentData(null, "text/plain", 0L, "UTF-8", Locale.UK));
|
|
properties5.put(ContentModel.PROP_DESCRIPTION, desc5);
|
|
properties5.put(ContentModel.PROP_TITLE, desc5);
|
|
properties5.put(ContentModel.PROP_NAME, "EE.aa");
|
|
properties5.put(ContentModel.PROP_CREATED, new Date());
|
|
|
|
c5 = nodeService.createNode(f5, ContentModel.ASSOC_CONTAINS, QName.createQName("cm", "Five", namespaceService), ContentModel.TYPE_CONTENT, properties5).getChildRef();
|
|
ContentWriter writer5 = contentService.getWriter(c5, ContentModel.PROP_CONTENT, true);
|
|
writer5.setEncoding("UTF-8");
|
|
writer5.putContent("Five zebra Ebury");
|
|
nodeService.addAspect(c5, ContentModel.ASPECT_TITLED, null);
|
|
content_only_count++;
|
|
doc_count++;
|
|
|
|
Map<QName, Serializable> lockProperties = new HashMap<QName, Serializable>();
|
|
lockProperties.put(ContentModel.PROP_EXPIRY_DATE, DefaultTypeConverter.INSTANCE.convert(Date.class, "2012-12-12T12:12:12.012Z"));
|
|
lockProperties.put(ContentModel.PROP_LOCK_OWNER, "andy");
|
|
lockProperties.put(ContentModel.PROP_LOCK_TYPE, "WRITE_LOCK");
|
|
|
|
nodeService.addAspect(c5, ContentModel.ASPECT_LOCKABLE, lockProperties);
|
|
|
|
Map<QName, Serializable> properties6 = new HashMap<QName, Serializable>();
|
|
MLText desc6 = new MLText();
|
|
desc6.addValue(Locale.ENGLISH, "Six");
|
|
desc6.addValue(Locale.US, "Six");
|
|
properties6.put(ContentModel.PROP_CONTENT, new ContentData(null, "text/plain", 0L, "UTF-8", Locale.UK));
|
|
properties6.put(ContentModel.PROP_DESCRIPTION, desc6);
|
|
properties6.put(ContentModel.PROP_TITLE, desc6);
|
|
properties6.put(ContentModel.PROP_NAME, "FF.EE");
|
|
properties6.put(ContentModel.PROP_CREATED, new Date());
|
|
c6 = nodeService.createNode(f6, ContentModel.ASSOC_CONTAINS, QName.createQName("cm", "Six", namespaceService), ContentModel.TYPE_CONTENT, properties6).getChildRef();
|
|
ContentWriter writer6 = contentService.getWriter(c6, ContentModel.PROP_CONTENT, true);
|
|
writer6.setEncoding("UTF-8");
|
|
writer6.putContent("Six zebra fig");
|
|
nodeService.addAspect(c6, ContentModel.ASPECT_TITLED, null);
|
|
content_only_count++;
|
|
doc_count++;
|
|
|
|
Map<QName, Serializable> properties7 = new HashMap<QName, Serializable>();
|
|
MLText desc7 = new MLText();
|
|
desc7.addValue(Locale.ENGLISH, "Seven");
|
|
desc7.addValue(Locale.US, "Seven");
|
|
properties7.put(ContentModel.PROP_CONTENT, new ContentData(null, "text/plain", 0L, "UTF-8", Locale.UK));
|
|
properties7.put(ContentModel.PROP_DESCRIPTION, desc7);
|
|
properties7.put(ContentModel.PROP_TITLE, desc7);
|
|
properties7.put(ContentModel.PROP_NAME, "GG*GG");
|
|
properties7.put(ContentModel.PROP_CREATED, new Date());
|
|
c7 = nodeService.createNode(f7, ContentModel.ASSOC_CONTAINS, QName.createQName("cm", "Seven", namespaceService), ContentModel.TYPE_CONTENT, properties7).getChildRef();
|
|
ContentWriter writer7 = contentService.getWriter(c7, ContentModel.PROP_CONTENT, true);
|
|
writer7.setEncoding("UTF-8");
|
|
writer7.putContent("Seven zebra grapefruit");
|
|
nodeService.addAspect(c7, ContentModel.ASPECT_TITLED, null);
|
|
content_only_count++;
|
|
doc_count++;
|
|
|
|
Map<QName, Serializable> properties8 = new HashMap<QName, Serializable>();
|
|
MLText desc8 = new MLText();
|
|
desc8.addValue(Locale.ENGLISH, "Eight");
|
|
desc8.addValue(Locale.US, "Eight");
|
|
properties8.put(ContentModel.PROP_CONTENT, new ContentData(null, "text/plain", 0L, "UTF-8", Locale.UK));
|
|
properties8.put(ContentModel.PROP_DESCRIPTION, desc8);
|
|
properties8.put(ContentModel.PROP_TITLE, desc8);
|
|
properties8.put(ContentModel.PROP_NAME, "HH?HH");
|
|
properties8.put(ContentModel.PROP_CREATED, new Date());
|
|
c8 = nodeService.createNode(f8, ContentModel.ASSOC_CONTAINS, QName.createQName("cm", "Eight", namespaceService), ContentModel.TYPE_CONTENT, properties8).getChildRef();
|
|
ContentWriter writer8 = contentService.getWriter(c8, ContentModel.PROP_CONTENT, true);
|
|
writer8.setEncoding("UTF-8");
|
|
writer8.putContent("Eight zebra jackfruit");
|
|
nodeService.addAspect(c8, ContentModel.ASPECT_TITLED, null);
|
|
content_only_count++;
|
|
doc_count++;
|
|
|
|
Map<QName, Serializable> properties9 = new HashMap<QName, Serializable>();
|
|
MLText desc9 = new MLText();
|
|
desc9.addValue(Locale.ENGLISH, "Nine");
|
|
desc9.addValue(Locale.US, "Nine");
|
|
properties9.put(ContentModel.PROP_CONTENT, new ContentData(null, "text/plain", 0L, "UTF-8", Locale.UK));
|
|
properties9.put(ContentModel.PROP_DESCRIPTION, desc9);
|
|
properties9.put(ContentModel.PROP_TITLE, desc9);
|
|
properties9.put(ContentModel.PROP_NAME, "aa");
|
|
properties9.put(ContentModel.PROP_CREATED, new Date());
|
|
c9 = nodeService.createNode(f9, ContentModel.ASSOC_CONTAINS, QName.createQName("cm", "Nine", namespaceService), ContentModel.TYPE_CONTENT, properties9).getChildRef();
|
|
ContentWriter writer9 = contentService.getWriter(c9, ContentModel.PROP_CONTENT, true);
|
|
writer9.setEncoding("UTF-8");
|
|
writer9.putContent("Nine zebra kiwi");
|
|
nodeService.addAspect(c9, ContentModel.ASPECT_TITLED, null);
|
|
content_only_count++;
|
|
doc_count++;
|
|
nodeService.setProperty(c9, ContentModel.PROP_VERSION_LABEL, "label");
|
|
|
|
Map<QName, Serializable> properties10 = new HashMap<QName, Serializable>();
|
|
MLText desc10 = new MLText();
|
|
desc10.addValue(Locale.ENGLISH, "Ten");
|
|
desc10.addValue(Locale.US, "Ten");
|
|
properties10.put(ContentModel.PROP_CONTENT, new ContentData(null, "text/plain", 0L, "UTF-8", Locale.UK));
|
|
properties10.put(ContentModel.PROP_DESCRIPTION, desc10);
|
|
properties10.put(ContentModel.PROP_TITLE, desc10);
|
|
properties10.put(ContentModel.PROP_NAME, "aa-thumb");
|
|
properties10.put(ContentModel.PROP_CREATED, new Date());
|
|
c10 = nodeService.createNode(f9, ContentModel.ASSOC_CONTAINS, QName.createQName("cm", "Ten", namespaceService), ContentModel.TYPE_DICTIONARY_MODEL, properties10).getChildRef();
|
|
ContentWriter writer10 = contentService.getWriter(c10, ContentModel.PROP_CONTENT, true);
|
|
writer10.setEncoding("UTF-8");
|
|
writer10.putContent("Tem zebra kiwi thumb");
|
|
nodeService.addAspect(c10, ContentModel.ASPECT_TITLED, null);
|
|
doc_count++;
|
|
nodeService.setProperty(c10, ContentModel.PROP_VERSION_LABEL, "label");
|
|
}
|
|
|
|
@Override
|
|
protected void tearDown() throws Exception
|
|
{
|
|
super.tearDown();
|
|
this.luceneFTS.resume();
|
|
}
|
|
|
|
|
|
|
|
private <T> T testQuery(String query, int size, boolean dump, String returnPropertyName, T returnType, boolean shouldThrow) throws Exception
|
|
{
|
|
return testQuery(query, size, dump, returnPropertyName, returnType, shouldThrow, CMISQueryMode.CMS_STRICT);
|
|
}
|
|
|
|
private <T> T testExtendedQuery(String query, int size, boolean dump, String returnPropertyName, T returnType, boolean shouldThrow) throws Exception
|
|
{
|
|
return testQuery(query, size, dump, returnPropertyName, returnType, shouldThrow, CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
}
|
|
|
|
@SuppressWarnings("unchecked")
|
|
private <T> T testQuery(String query, int size, boolean dump, String returnPropertyName, T returnType, boolean shouldThrow, CMISQueryMode mode) throws Exception
|
|
{
|
|
CMISResultSet rs = null;
|
|
try
|
|
{
|
|
T returnValue = null;
|
|
CMISQueryOptions options = new CMISQueryOptions(query, rootNodeRef.getStoreRef());
|
|
options.setQueryMode(mode);
|
|
options.setIncludeInTransactionData(true);
|
|
rs = cmisQueryService.query(options);
|
|
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
if (row.getIndex() == 0)
|
|
{
|
|
Serializable sValue = row.getValue(returnPropertyName);
|
|
returnValue = (T) DefaultTypeConverter.INSTANCE.convert(returnType.getClass(), sValue);
|
|
if (dump)
|
|
{
|
|
System.out.println(cmisConnector.getNodeProperties(cmisConnector.createNodeInfo(row.getNodeRef(rs.getMetaData().getSelectorNames()[0])), null));
|
|
}
|
|
}
|
|
if (dump)
|
|
{
|
|
System.out.println("ID ="
|
|
+ row.getValue("cmis:objectId") + " " + ((returnPropertyName != null) ? (returnPropertyName + "=" + row.getValue(returnPropertyName)) : "") + " Score="
|
|
+ row.getScore() + " " + row.getScores());
|
|
}
|
|
}
|
|
if (size >= 0)
|
|
{
|
|
assertEquals(size, rs.getLength());
|
|
}
|
|
if (shouldThrow)
|
|
{
|
|
fail();
|
|
}
|
|
return returnValue;
|
|
}
|
|
catch (CmisBaseException e)
|
|
{
|
|
if (shouldThrow)
|
|
{
|
|
return null;
|
|
}
|
|
else
|
|
{
|
|
throw e;
|
|
}
|
|
}
|
|
catch (QueryModelException e)
|
|
{
|
|
if (shouldThrow)
|
|
{
|
|
return null;
|
|
}
|
|
else
|
|
{
|
|
throw e;
|
|
}
|
|
}
|
|
catch (FTSQueryException e)
|
|
{
|
|
if (shouldThrow)
|
|
{
|
|
return null;
|
|
}
|
|
else
|
|
{
|
|
throw e;
|
|
}
|
|
}
|
|
catch (UnsupportedOperationException e)
|
|
{
|
|
if (shouldThrow)
|
|
{
|
|
return null;
|
|
}
|
|
else
|
|
{
|
|
throw e;
|
|
}
|
|
}
|
|
finally
|
|
{
|
|
if (rs != null)
|
|
{
|
|
try
|
|
{
|
|
rs.close();
|
|
}
|
|
finally
|
|
{
|
|
rs = null;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
public void testEncodingOfTypeAndPropertyNames() throws Exception
|
|
{
|
|
addTypeTestDataModel();
|
|
|
|
assertNotNull("Type not found by query name "+ISO9075.encodeSQL(typeThatRequiresEncoding.toPrefixString(namespaceService)), cmisDictionaryService.findTypeByQueryName(ISO9075.encodeSQL(typeThatRequiresEncoding.toPrefixString(namespaceService))));
|
|
assertNotNull("Aspect not found by query name "+ISO9075.encodeSQL(aspectThatRequiresEncoding.toPrefixString(namespaceService)), cmisDictionaryService.findTypeByQueryName(ISO9075.encodeSQL(aspectThatRequiresEncoding.toPrefixString(namespaceService))));
|
|
assertNotNull("Prop not found by query name "+ISO9075.encodeSQL(propertyThatRequiresEncoding.toPrefixString(namespaceService)), cmisDictionaryService.findPropertyByQueryName(ISO9075.encodeSQL(propertyThatRequiresEncoding.toPrefixString(namespaceService))));
|
|
|
|
|
|
testQuery("SELECT * FROM "+ ISO9075.encodeSQL(typeThatRequiresEncoding.toPrefixString(namespaceService)), 0, false, "cmis:allowedChildObjectTypeIds",
|
|
new String(), false);
|
|
testQuery("SELECT * FROM test:type_x002d_that_x002d_requires_x002d_encoding", 0, false, "cmis:allowedChildObjectTypeIds",
|
|
new String(), false);
|
|
testQuery("SELECT * FROM test:type_x002D_that_x002D_requires_x002D_encoding", 0, false, "cmis:allowedChildObjectTypeIds",
|
|
new String(), false);
|
|
}
|
|
|
|
public void test_ALLOWED_CHILD_OBJECT_TYPES() throws Exception
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM cmis:folder", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(folder_count, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:allowedChildObjectTypeIds");
|
|
Collection<String> values = DefaultTypeConverter.INSTANCE.getCollection(String.class, sValue);
|
|
assertNotNull(values);
|
|
assertEquals(0, values.size());
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:allowedChildObjectTypeIds");
|
|
assertNotNull(column);
|
|
assertEquals(PropertyType.ID, column.getCMISDataType());
|
|
assertEquals(Cardinality.MULTI, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
}
|
|
rs.close();
|
|
|
|
testQuery("SELECT cmis:allowedChildObjectTypeIds FROM cmis:folder WHERE cmis:allowedChildObjectTypeIds = 'test'", 0, false, "cmis:allowedChildObjectTypeIds",
|
|
new String(), true);
|
|
testQuery("SELECT cmis:allowedChildObjectTypeIds FROM cmis:folder WHERE cmis:allowedChildObjectTypeIds <> 'test'", 10, false, "cmis:allowedChildObjectTypeIds",
|
|
new String(), true);
|
|
testQuery("SELECT cmis:allowedChildObjectTypeIds FROM cmis:folder WHERE cmis:allowedChildObjectTypeIds < 'test'", 0, false, "cmis:allowedChildObjectTypeIds",
|
|
new String(), true);
|
|
testQuery("SELECT cmis:allowedChildObjectTypeIds FROM cmis:folder WHERE cmis:allowedChildObjectTypeIds <= 'test'", 0, false, "cmis:allowedChildObjectTypeIds",
|
|
new String(), true);
|
|
testQuery("SELECT cmis:allowedChildObjectTypeIds FROM cmis:folder WHERE cmis:allowedChildObjectTypeIds > 'test'", 0, false, "cmis:allowedChildObjectTypeIds",
|
|
new String(), true);
|
|
testQuery("SELECT cmis:allowedChildObjectTypeIds FROM cmis:folder WHERE cmis:allowedChildObjectTypeIds >= 'test'", 0, false, "cmis:allowedChildObjectTypeIds",
|
|
new String(), true);
|
|
|
|
testQuery("SELECT cmis:allowedChildObjectTypeIds FROM cmis:folder WHERE cmis:allowedChildObjectTypeIds IN ('test')", 0, false, "cmis:allowedChildObjectTypeIds",
|
|
new String(), true);
|
|
testQuery("SELECT cmis:allowedChildObjectTypeIds FROM cmis:folder WHERE cmis:allowedChildObjectTypeIds NOT IN ('test')", 10, false, "cmis:allowedChildObjectTypeIds",
|
|
new String(), true);
|
|
|
|
testQuery("SELECT cmis:allowedChildObjectTypeIds FROM cmis:folder WHERE cmis:allowedChildObjectTypeIds LIKE 'test'", 0, false, "cmis:allowedChildObjectTypeIds",
|
|
new String(), true);
|
|
testQuery("SELECT cmis:allowedChildObjectTypeIds FROM cmis:folder WHERE cmis:allowedChildObjectTypeIds NOT LIKE 'test'", 0, false, "cmis:allowedChildObjectTypeIds",
|
|
new String(), true);
|
|
|
|
testQuery("SELECT cmis:allowedChildObjectTypeIds FROM cmis:folder WHERE cmis:allowedChildObjectTypeIds IS NOT NULL", 0, false, "cmis:allowedChildObjectTypeIds",
|
|
new String(), true);
|
|
testQuery("SELECT cmis:allowedChildObjectTypeIds FROM cmis:folder WHERE cmis:allowedChildObjectTypeIds IS NULL", 10, false, "cmis:allowedChildObjectTypeIds",
|
|
new String(), true);
|
|
|
|
testQuery("SELECT cmis:allowedChildObjectTypeIds FROM cmis:folder WHERE 'test' = ANY cmis:allowedChildObjectTypeIds", 0, false, "cmis:allowedChildObjectTypeIds",
|
|
new String(), true);
|
|
testQuery("SELECT cmis:allowedChildObjectTypeIds FROM cmis:folder WHERE 'test' <> ANY cmis:allowedChildObjectTypeIds", 10, false, "cmis:allowedChildObjectTypeIds",
|
|
new String(), true);
|
|
testQuery("SELECT cmis:allowedChildObjectTypeIds FROM cmis:folder WHERE 'test' < ANY cmis:allowedChildObjectTypeIds", 0, false, "cmis:allowedChildObjectTypeIds",
|
|
new String(), true);
|
|
testQuery("SELECT cmis:allowedChildObjectTypeIds FROM cmis:folder WHERE 'test' <= ANY cmis:allowedChildObjectTypeIds", 0, false, "cmis:allowedChildObjectTypeIds",
|
|
new String(), true);
|
|
testQuery("SELECT cmis:allowedChildObjectTypeIds FROM cmis:folder WHERE 'test' > ANY cmis:allowedChildObjectTypeIds", 0, false, "cmis:allowedChildObjectTypeIds",
|
|
new String(), true);
|
|
testQuery("SELECT cmis:allowedChildObjectTypeIds FROM cmis:folder WHERE 'test' >= ANY cmis:allowedChildObjectTypeIds", 0, false, "cmis:allowedChildObjectTypeIds",
|
|
new String(), true);
|
|
|
|
testQuery("SELECT cmis:allowedChildObjectTypeIds FROM cmis:folder WHERE ANY cmis:allowedChildObjectTypeIds IN ('test')", 0, false, "cmis:allowedChildObjectTypeIds",
|
|
new String(), true);
|
|
testQuery("SELECT cmis:allowedChildObjectTypeIds FROM cmis:folder WHERE ANY cmis:allowedChildObjectTypeIds NOT IN ('test')", 10, false, "cmis:allowedChildObjectTypeIds",
|
|
new String(), true);
|
|
}
|
|
|
|
public void test_PARENT() throws Exception
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM cmis:folder", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(folder_count, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
if(!row.getNodeRef().equals(base))
|
|
{
|
|
|
|
Serializable sValue = row.getValue("cmis:parentId");
|
|
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertNotNull(value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:parentId");
|
|
assertEquals(PropertyType.ID, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof ParentProperty);
|
|
}
|
|
}
|
|
rs.close();
|
|
|
|
options = new CMISQueryOptions("SELECT * FROM cmis:folder where cmis:parentId = '" + f8.toString() + "'", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
rs = cmisQueryService.query(options);
|
|
assertEquals(1, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:parentId");
|
|
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertNotNull(value);
|
|
assertEquals(f8.toString(), value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:parentId");
|
|
assertEquals(PropertyType.ID, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof ParentProperty);
|
|
}
|
|
rs.close();
|
|
|
|
testQuery("SELECT cmis:parentId FROM cmis:folder WHERE cmis:parentId = '" + base.toString() + "'", 4, false, "cmis:parentId", new String(), false);
|
|
testQuery("SELECT cmis:parentId FROM cmis:folder WHERE cmis:parentId <> '" + base.toString() + "'", folder_count-4, false, "cmis:parentId", new String(), false);
|
|
testQuery("SELECT cmis:parentId FROM cmis:folder WHERE cmis:parentId < '" + base.toString() + "'", 0, false, "cmis:parentId", new String(), true);
|
|
testQuery("SELECT cmis:parentId FROM cmis:folder WHERE cmis:parentId <= '" + base.toString() + "'", 0, false, "cmis:parentId", new String(), true);
|
|
testQuery("SELECT cmis:parentId FROM cmis:folder WHERE cmis:parentId > '" + base.toString() + "'", 0, false, "cmis:parentId", new String(), true);
|
|
testQuery("SELECT cmis:parentId FROM cmis:folder WHERE cmis:parentId >= '" + base.toString() + "'", 0, false, "cmis:parentId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:parentId FROM cmis:folder WHERE cmis:parentId IN ('" + base.toString() + "')", 4, false, "cmis:parentId", new String(), false);
|
|
testQuery("SELECT cmis:parentId FROM cmis:folder WHERE cmis:parentId NOT IN ('" + base.toString() + "')", folder_count-4, false, "cmis:parentId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:parentId FROM cmis:folder WHERE cmis:parentId LIKE '" + base.toString() + "'", 4, false, "cmis:parentId", new String(), true);
|
|
testQuery("SELECT cmis:parentId FROM cmis:folder WHERE cmis:parentId NOT LIKE '" + base.toString() + "'", folder_count-4, false, "cmis:parentId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:parentId FROM cmis:folder WHERE cmis:parentId IS NOT NULL", folder_count, false, "cmis:parentId", new String(), false);
|
|
testQuery("SELECT cmis:parentId FROM cmis:folder WHERE cmis:parentId IS NULL", 0, false, "cmis:parentId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:parentId FROM cmis:folder WHERE '" + base.toString() + "' = ANY cmis:parentId", 4, false, "cmis:parentId", new String(), true);
|
|
testQuery("SELECT cmis:parentId FROM cmis:folder WHERE '" + base.toString() + "' <> ANY cmis:parentId", folder_count-4, false, "cmis:parentId", new String(), true);
|
|
testQuery("SELECT cmis:parentId FROM cmis:folder WHERE '" + base.toString() + "' < ANY cmis:parentId", 0, false, "cmis:parentId", new String(), true);
|
|
testQuery("SELECT cmis:parentId FROM cmis:folder WHERE '" + base.toString() + "' <= ANY cmis:parentId", 0, false, "cmis:parentId", new String(), true);
|
|
testQuery("SELECT cmis:parentId FROM cmis:folder WHERE '" + base.toString() + "' > ANY cmis:parentId", 0, false, "cmis:parentId", new String(), true);
|
|
testQuery("SELECT cmis:parentId FROM cmis:folder WHERE '" + base.toString() + "' >= ANY cmis:parentId", 0, false, "cmis:parentId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:parentId FROM cmis:folder WHERE ANY cmis:parentId IN ('" + base.toString() + "')", 4, false, "cmis:parentId", new String(), true);
|
|
testQuery("SELECT cmis:parentId FROM cmis:folder WHERE ANY cmis:parentId NOT IN ('" + base.toString() + "')", folder_count-4, false, "cmis:parentId", new String(), true);
|
|
}
|
|
|
|
public void test_PATH() throws Exception
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM cmis:folder", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(folder_count, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:path");
|
|
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertNotNull(value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:path");
|
|
assertNotNull(column);
|
|
assertEquals(PropertyType.STRING, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof PathProperty);
|
|
}
|
|
rs.close();
|
|
|
|
testQuery("SELECT cmis:path FROM cmis:folder", folder_count, false, "cmis:path", new String(), false);
|
|
testQuery("SELECT cmis:path FROM cmis:folder WHERE cmis:path = 'anything'", folder_count, false, "cmis:path", new String(), true);
|
|
|
|
}
|
|
|
|
public void test_CONTENT_STREAM_ID() throws Exception
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM cmis:document", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(doc_count, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:contentStreamId");
|
|
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertNotNull(value);
|
|
ContentData cd = DefaultTypeConverter.INSTANCE.convert(ContentData.class, nodeService.getProperty(row.getNodeRef(), ContentModel.PROP_CONTENT));
|
|
assertEquals(cd.getContentUrl(), value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:contentStreamId");
|
|
assertNotNull(column);
|
|
assertEquals(PropertyType.ID, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof ContentStreamIdProperty);
|
|
}
|
|
rs.close();
|
|
|
|
options = new CMISQueryOptions("SELECT * FROM cmis:document WHERE cmis:contentStreamFileName = 'Alfresco Tutorial'", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
rs = cmisQueryService.query(options);
|
|
assertEquals(1, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:contentStreamId");
|
|
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertNotNull(value);
|
|
assertEquals(contentUrl0, value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:contentStreamId");
|
|
assertNotNull(column);
|
|
assertEquals(PropertyType.ID, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof ContentStreamIdProperty);
|
|
}
|
|
rs.close();
|
|
|
|
testQuery("SELECT cmis:contentStreamId FROM cmis:document", doc_count, false, "cmis:contentStreamId", new String(), false);
|
|
|
|
// not allowed in predicates
|
|
testQuery("SELECT cmis:contentStreamId FROM cmis:document WHERE cmis:contentStreamId = '" + contentUrl0 + "'", 1, false, "cmis:contentStreamId", new String(), true);
|
|
|
|
}
|
|
|
|
public void test_CONTENT_STREAM_FILENAME() throws Exception
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM cmis:document", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(doc_count, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:contentStreamFileName");
|
|
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertNotNull(value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:contentStreamFileName");
|
|
assertEquals(PropertyType.STRING, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof DirectProperty);
|
|
}
|
|
rs.close();
|
|
|
|
options = new CMISQueryOptions("SELECT * FROM cmis:document WHERE cmis:contentStreamFileName = 'Alfresco Tutorial'", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
rs = cmisQueryService.query(options);
|
|
assertEquals(1, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:contentStreamFileName");
|
|
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertNotNull(value);
|
|
assertEquals("Alfresco Tutorial", value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:contentStreamFileName");
|
|
assertEquals(PropertyType.STRING, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof DirectProperty);
|
|
}
|
|
rs.close();
|
|
|
|
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName = 'Alfresco Tutorial'", 1, false, "cmis:contentStreamFileName",
|
|
new String(), false);
|
|
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName = 'AA%'", 1, false, "cmis:contentStreamFileName", new String(), false);
|
|
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName = 'BB_'", 1, false, "cmis:contentStreamFileName", new String(), false);
|
|
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName = 'CC\\\\'", 1, false, "cmis:contentStreamFileName", new String(), false);
|
|
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName = 'DD\\''", 1, false, "cmis:contentStreamFileName", new String(), false);
|
|
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName = 'EE.aa'", 1, false, "cmis:contentStreamFileName", new String(), false);
|
|
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName = 'FF.EE'", 1, false, "cmis:contentStreamFileName", new String(), false);
|
|
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName = 'GG*GG'", 1, false, "cmis:contentStreamFileName", new String(), false);
|
|
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName = 'HH?HH'", 1, false, "cmis:contentStreamFileName", new String(), false);
|
|
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName = 'aa'", 1, false, "cmis:contentStreamFileName", new String(), false);
|
|
|
|
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName = 'Alfresco Tutorial'", 1, false, "cmis:contentStreamFileName",
|
|
new String(), false);
|
|
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName <> 'Alfresco Tutorial'", 10, false, "cmis:contentStreamFileName",
|
|
new String(), false);
|
|
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName < 'Alfresco Tutorial'", 1, false, "cmis:contentStreamFileName",
|
|
new String(), false);
|
|
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName <= 'Alfresco Tutorial'", 2, false, "cmis:contentStreamFileName",
|
|
new String(), false);
|
|
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName > 'Alfresco Tutorial'", 9, true, "cmis:contentStreamFileName",
|
|
new String(), false);
|
|
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName >= 'Alfresco Tutorial'", 10, false, "cmis:contentStreamFileName",
|
|
new String(), false);
|
|
|
|
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName IN ('Alfresco Tutorial')", 1, false, "cmis:contentStreamFileName",
|
|
new String(), false);
|
|
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName NOT IN ('Alfresco Tutorial')", 10, false, "cmis:contentStreamFileName",
|
|
new String(), false);
|
|
|
|
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName LIKE 'Alfresco Tutorial'", 1, false, "cmis:contentStreamFileName",
|
|
new String(), false);
|
|
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName NOT LIKE 'Alfresco Tutorial'", 10, false, "cmis:contentStreamFileName",
|
|
new String(), false);
|
|
|
|
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName IS NOT NULL", 11, false, "cmis:contentStreamFileName", new String(), false);
|
|
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName IS NULL", 0, false, "cmis:contentStreamFileName", new String(), false);
|
|
|
|
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE 'Alfresco Tutorial' = ANY cmis:contentStreamFileName", 1, false, "cmis:contentStreamFileName",
|
|
new String(), true);
|
|
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE 'Alfresco Tutorial' <> ANY cmis:contentStreamFileName", 11, false, "cmis:contentStreamFileName",
|
|
new String(), true);
|
|
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE 'Alfresco Tutorial' < ANY cmis:contentStreamFileName", 1, false, "cmis:contentStreamFileName",
|
|
new String(), true);
|
|
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE 'Alfresco Tutorial' <= ANY cmis:contentStreamFileName", 2, false, "cmis:contentStreamFileName",
|
|
new String(), true);
|
|
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE 'Alfresco Tutorial' > ANY cmis:contentStreamFileName", 9, false, "cmis:contentStreamFileName",
|
|
new String(), true);
|
|
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE 'Alfresco Tutorial' >= ANY cmis:contentStreamFileName", 11, false, "cmis:contentStreamFileName",
|
|
new String(), true);
|
|
|
|
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE ANY cmis:contentStreamFileName IN ('Alfresco Tutorial')", 1, false, "cmis:contentStreamFileName",
|
|
new String(), true);
|
|
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE ANY cmis:contentStreamFileName NOT IN ('Alfresco Tutorial')", 10, false, "cmis:contentStreamFileName",
|
|
new String(), true);
|
|
}
|
|
|
|
public void test_CONTENT_STREAM_MIME_TYPE() throws Exception
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM cmis:document", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(doc_count, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:contentStreamMimeType");
|
|
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertNotNull(value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:contentStreamMimeType");
|
|
assertEquals(PropertyType.STRING, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof ContentStreamMimetypeProperty);
|
|
}
|
|
rs.close();
|
|
|
|
options = new CMISQueryOptions("SELECT * FROM cmis:document WHERE cmis:contentStreamMimeType = 'text/plain'", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
rs = cmisQueryService.query(options);
|
|
assertTrue(rs.length() > 0);
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:contentStreamMimeType");
|
|
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertNotNull(value);
|
|
assertEquals("text/plain", value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:contentStreamMimeType");
|
|
assertEquals(PropertyType.STRING, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof ContentStreamMimetypeProperty);
|
|
}
|
|
rs.close();
|
|
|
|
testQuery("SELECT cmis:contentStreamMimeType FROM cmis:document WHERE cmis:contentStreamMimeType = 'text/plain'", doc_count, false, "cmis:contentStreamMimeType", new String(),
|
|
false);
|
|
testQuery("SELECT cmis:contentStreamMimeType FROM cmis:document WHERE cmis:contentStreamMimeType <> 'text/plain'", 0, false, "cmis:contentStreamMimeType", new String(),
|
|
false);
|
|
testQuery("SELECT cmis:contentStreamMimeType FROM cmis:document WHERE cmis:contentStreamMimeType < 'text/plain'", 0, true, "cmis:contentStreamMimeType", new String(),
|
|
false);
|
|
testQuery("SELECT cmis:contentStreamMimeType FROM cmis:document WHERE cmis:contentStreamMimeType <= 'text/plain'", doc_count, false, "cmis:contentStreamMimeType", new String(),
|
|
false);
|
|
testQuery("SELECT cmis:contentStreamMimeType FROM cmis:document WHERE cmis:contentStreamMimeType > 'text/plain'", 0, false, "cmis:contentStreamMimeType", new String(),
|
|
false);
|
|
testQuery("SELECT cmis:contentStreamMimeType FROM cmis:document WHERE cmis:contentStreamMimeType >= 'text/plain'", doc_count, false, "cmis:contentStreamMimeType", new String(),
|
|
false);
|
|
|
|
testQuery("SELECT cmis:contentStreamMimeType FROM cmis:document WHERE cmis:contentStreamMimeType IN ('text/plain')", doc_count, false, "cmis:contentStreamMimeType",
|
|
new String(), false);
|
|
testQuery("SELECT cmis:contentStreamMimeType FROM cmis:document WHERE cmis:contentStreamMimeType NOT IN ('text/plain')", 0, false, "cmis:contentStreamMimeType",
|
|
new String(), false);
|
|
|
|
testQuery("SELECT cmis:contentStreamMimeType FROM cmis:document WHERE cmis:contentStreamMimeType LIKE 'text/plain'", doc_count, false, "cmis:contentStreamMimeType",
|
|
new String(), false);
|
|
testQuery("SELECT cmis:contentStreamMimeType FROM cmis:document WHERE cmis:contentStreamMimeType NOT LIKE 'text/plain'", 0, false, "cmis:contentStreamMimeType",
|
|
new String(), false);
|
|
|
|
testQuery("SELECT cmis:contentStreamMimeType FROM cmis:document WHERE cmis:contentStreamMimeType IS NOT NULL", doc_count, false, "cmis:contentStreamMimeType", new String(), false);
|
|
testQuery("SELECT cmis:contentStreamMimeType FROM cmis:document WHERE cmis:contentStreamMimeType IS NULL", 0, false, "cmis:contentStreamMimeType", new String(), false);
|
|
|
|
testQuery("SELECT cmis:contentStreamMimeType FROM cmis:document WHERE 'text/plain' = ANY cmis:contentStreamMimeType", doc_count, false, "cmis:contentStreamMimeType",
|
|
new String(), true);
|
|
testQuery("SELECT cmis:contentStreamMimeType FROM cmis:document WHERE 'text/plain' <> ANY cmis:contentStreamMimeType", 0, false, "cmis:contentStreamMimeType",
|
|
new String(), true);
|
|
testQuery("SELECT cmis:contentStreamMimeType FROM cmis:document WHERE 'text/plain' < ANY cmis:contentStreamMimeType", 0, false, "cmis:contentStreamMimeType",
|
|
new String(), true);
|
|
testQuery("SELECT cmis:contentStreamMimeType FROM cmis:document WHERE 'text/plain' <= ANY cmis:contentStreamMimeType", doc_count, false, "cmis:contentStreamMimeType",
|
|
new String(), true);
|
|
testQuery("SELECT cmis:contentStreamMimeType FROM cmis:document WHERE 'text/plain' > ANY cmis:contentStreamMimeType", 0, false, "cmis:contentStreamMimeType",
|
|
new String(), true);
|
|
testQuery("SELECT cmis:contentStreamMimeType FROM cmis:document WHERE 'text/plain' >= ANY cmis:contentStreamMimeType", doc_count, false, "cmis:contentStreamMimeType",
|
|
new String(), true);
|
|
|
|
testQuery("SELECT cmis:contentStreamMimeType FROM cmis:document WHERE ANY cmis:contentStreamMimeType IN ('text/plain')", doc_count, false, "cmis:contentStreamMimeType",
|
|
new String(), true);
|
|
testQuery("SELECT cmis:contentStreamMimeType FROM cmis:document WHERE ANY cmis:contentStreamMimeType NOT IN ('text/plain')", 0, false, "cmis:contentStreamMimeType",
|
|
new String(), true);
|
|
}
|
|
|
|
public void test_CONTENT_STREAM_LENGTH() throws Exception
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM cmis:document", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(doc_count, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:contentStreamLength");
|
|
Long value = DefaultTypeConverter.INSTANCE.convert(Long.class, sValue);
|
|
assertNotNull(value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:contentStreamLength");
|
|
assertEquals(PropertyType.INTEGER, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof ContentStreamLengthProperty);
|
|
}
|
|
rs.close();
|
|
|
|
options = new CMISQueryOptions("SELECT * FROM cmis:document WHERE cmis:contentStreamLength = " + contentLength0, rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
rs = cmisQueryService.query(options);
|
|
assertEquals(1, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:contentStreamLength");
|
|
Long value = DefaultTypeConverter.INSTANCE.convert(Long.class, sValue);
|
|
assertNotNull(value);
|
|
assertEquals(Long.valueOf(contentLength0), value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:contentStreamLength");
|
|
assertEquals(PropertyType.INTEGER, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof ContentStreamLengthProperty);
|
|
}
|
|
rs.close();
|
|
|
|
testQuery("SELECT cmis:contentStreamLength FROM cmis:document WHERE cmis:contentStreamLength = 750", 0, false, "cmis:contentStreamLength", new String(), false);
|
|
testQuery("SELECT cmis:contentStreamLength FROM cmis:document WHERE cmis:contentStreamLength <> 750", doc_count, true, "cmis:contentStreamLength", new String(), false);
|
|
testQuery("SELECT cmis:contentStreamLength FROM cmis:document WHERE cmis:contentStreamLength < 750", doc_count, false, "cmis:contentStreamLength", new String(), false);
|
|
testQuery("SELECT cmis:contentStreamLength FROM cmis:document WHERE cmis:contentStreamLength <= 750", doc_count, false, "cmis:contentStreamLength", new String(), false);
|
|
testQuery("SELECT cmis:contentStreamLength FROM cmis:document WHERE cmis:contentStreamLength > 750", 0, false, "cmis:contentStreamLength", new String(), false);
|
|
testQuery("SELECT cmis:contentStreamLength FROM cmis:document WHERE cmis:contentStreamLength >= 750", 0, false, "cmis:contentStreamLength", new String(), false);
|
|
|
|
testQuery("SELECT cmis:contentStreamLength FROM cmis:document WHERE cmis:contentStreamLength IN (750)", 0, false, "cmis:contentStreamLength", new String(), false);
|
|
testQuery("SELECT cmis:contentStreamLength FROM cmis:document WHERE cmis:contentStreamLength NOT IN (750)", doc_count, false, "cmis:contentStreamLength", new String(), false);
|
|
|
|
testQuery("SELECT cmis:contentStreamLength FROM cmis:document WHERE cmis:contentStreamLength LIKE '750'", 0, false, "cmis:contentStreamLength", new String(), true);
|
|
testQuery("SELECT cmis:contentStreamLength FROM cmis:document WHERE cmis:contentStreamLength NOT LIKE '750'", doc_count, false, "cmis:contentStreamLength", new String(), true);
|
|
|
|
testQuery("SELECT cmis:contentStreamLength FROM cmis:document WHERE cmis:contentStreamLength IS NOT NULL", doc_count, false, "cmis:contentStreamLength", new String(), false);
|
|
testQuery("SELECT cmis:contentStreamLength FROM cmis:document WHERE cmis:contentStreamLength IS NULL", 0, false, "cmis:contentStreamLength", new String(), false);
|
|
|
|
testQuery("SELECT cmis:contentStreamLength FROM cmis:document WHERE 750 = ANY cmis:contentStreamLength", 0, false, "cmis:contentStreamLength", new String(), true);
|
|
testQuery("SELECT cmis:contentStreamLength FROM cmis:document WHERE 750 <> ANY cmis:contentStreamLength", doc_count, false, "cmis:contentStreamLength", new String(), true);
|
|
testQuery("SELECT cmis:contentStreamLength FROM cmis:document WHERE 750 < ANY cmis:contentStreamLength", doc_count, false, "cmis:contentStreamLength", new String(), true);
|
|
testQuery("SELECT cmis:contentStreamLength FROM cmis:document WHERE 750 <= ANY cmis:contentStreamLength", doc_count, false, "cmis:contentStreamLength", new String(), true);
|
|
testQuery("SELECT cmis:contentStreamLength FROM cmis:document WHERE 750 > ANY cmis:contentStreamLength", 0, false, "cmis:contentStreamLength", new String(), true);
|
|
testQuery("SELECT cmis:contentStreamLength FROM cmis:document WHERE 750 >= ANY cmis:contentStreamLength", 0, false, "cmis:contentStreamLength", new String(), true);
|
|
|
|
testQuery("SELECT cmis:contentStreamLength FROM cmis:document WHERE ANY cmis:contentStreamLength IN (750)", 0, false, "cmis:contentStreamLength", new String(), true);
|
|
testQuery("SELECT cmis:contentStreamLength FROM cmis:document WHERE ANY cmis:contentStreamLength NOT IN (750)", doc_count, false, "cmis:contentStreamLength", new String(), true);
|
|
}
|
|
|
|
public void test_CHECKIN_COMMENT() throws Exception
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM cmis:document", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(doc_count, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:checkinComment");
|
|
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertNull(value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:checkinComment");
|
|
assertNotNull(column);
|
|
assertEquals(PropertyType.STRING, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof CheckinCommentProperty);
|
|
}
|
|
rs.close();
|
|
|
|
testQuery("SELECT cmis:checkinComment FROM cmis:document", doc_count, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:checkinComment FROM cmis:document WHERE cmis:checkinComment = 'admin'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:checkinComment FROM cmis:document WHERE cmis:checkinComment <> 'admin'", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:checkinComment FROM cmis:document WHERE cmis:checkinComment < 'admin'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:checkinComment FROM cmis:document WHERE cmis:checkinComment <= 'admin'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:checkinComment FROM cmis:document WHERE cmis:checkinComment > 'admin'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:checkinComment FROM cmis:document WHERE cmis:checkinComment >= 'admin'", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:checkinComment FROM cmis:document WHERE cmis:checkinComment IN ('admin')", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:checkinComment FROM cmis:document WHERE cmis:checkinComment NOT IN ('admin')", doc_count, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:checkinComment FROM cmis:document WHERE cmis:checkinComment LIKE 'admin'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:checkinComment FROM cmis:document WHERE cmis:checkinComment NOT LIKE 'admin'", doc_count, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:checkinComment FROM cmis:document WHERE cmis:checkinComment IS NOT NULL", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:checkinComment FROM cmis:document WHERE cmis:checkinComment IS NULL", doc_count, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:checkinComment FROM cmis:document WHERE 'admin' = ANY cmis:checkinComment", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:checkinComment FROM cmis:document WHERE 'admin' <> ANY cmis:checkinComment", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:checkinComment FROM cmis:document WHERE 'admin' < ANY cmis:checkinComment", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:checkinComment FROM cmis:document WHERE 'admin' <= ANY cmis:checkinComment", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:checkinComment FROM cmis:document WHERE 'admin' > ANY cmis:checkinComment", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:checkinComment FROM cmis:document WHERE 'admin' >= ANY cmis:checkinComment", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:checkinComment FROM cmis:document WHERE ANY cmis:checkinComment IN ('admin')", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:checkinComment FROM cmis:document WHERE ANY cmis:checkinComment NOT IN ('admin')", doc_count, false, "cmis:objectId", new String(), true);
|
|
}
|
|
|
|
public void test_VERSION_SERIES_CHECKED_OUT_ID() throws Exception
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM cmis:document", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(doc_count, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:versionSeriesCheckedOutId");
|
|
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertNull(value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:versionSeriesCheckedOutId");
|
|
assertNotNull(column);
|
|
assertEquals(PropertyType.ID, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof VersionSeriesCheckedOutIdProperty);
|
|
}
|
|
rs.close();
|
|
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutId FROM cmis:document", doc_count, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutId FROM cmis:document WHERE cmis:versionSeriesCheckedOutId = 'admin'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutId FROM cmis:document WHERE cmis:versionSeriesCheckedOutId <> 'admin'", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutId FROM cmis:document WHERE cmis:versionSeriesCheckedOutId < 'admin'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutId FROM cmis:document WHERE cmis:versionSeriesCheckedOutId <= 'admin'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutId FROM cmis:document WHERE cmis:versionSeriesCheckedOutId > 'admin'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutId FROM cmis:document WHERE cmis:versionSeriesCheckedOutId >= 'admin'", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutId FROM cmis:document WHERE cmis:versionSeriesCheckedOutId IN ('admin')", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutId FROM cmis:document WHERE cmis:versionSeriesCheckedOutId NOT IN ('admin')", doc_count, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutId FROM cmis:document WHERE cmis:versionSeriesCheckedOutId LIKE 'admin'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutId FROM cmis:document WHERE cmis:versionSeriesCheckedOutId NOT LIKE 'admin'", doc_count, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutId FROM cmis:document WHERE cmis:versionSeriesCheckedOutId IS NOT NULL", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutId FROM cmis:document WHERE cmis:versionSeriesCheckedOutId IS NULL", doc_count, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutId FROM cmis:document WHERE 'admin' = ANY cmis:versionSeriesCheckedOutId", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutId FROM cmis:document WHERE 'admin' <> ANY cmis:versionSeriesCheckedOutId", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutId FROM cmis:document WHERE 'admin' < ANY cmis:versionSeriesCheckedOutId", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutId FROM cmis:document WHERE 'admin' <= ANY cmis:versionSeriesCheckedOutId", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutId FROM cmis:document WHERE 'admin' > ANY cmis:versionSeriesCheckedOutId", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutId FROM cmis:document WHERE 'admin' >= ANY cmis:versionSeriesCheckedOutId", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutId FROM cmis:document WHERE ANY cmis:versionSeriesCheckedOutId IN ('admin')", 0, false, "cmis:objectId", new String(),
|
|
true);
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutId FROM cmis:document WHERE ANY cmis:versionSeriesCheckedOutId NOT IN ('admin')", doc_count, false, "cmis:objectId", new String(),
|
|
true);
|
|
}
|
|
|
|
public void test_VERSION_SERIES_CHECKED_OUT_BY() throws Exception
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM cmis:document", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(doc_count, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:versionSeriesCheckedOutBy");
|
|
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertNull(value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:versionSeriesCheckedOutBy");
|
|
assertNotNull(column);
|
|
assertEquals(PropertyType.STRING, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof VersionSeriesCheckedOutByProperty);
|
|
}
|
|
rs.close();
|
|
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutBy FROM cmis:document", doc_count, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutBy FROM cmis:document WHERE cmis:versionSeriesCheckedOutBy = 'admin'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutBy FROM cmis:document WHERE cmis:versionSeriesCheckedOutBy <> 'admin'", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutBy FROM cmis:document WHERE cmis:versionSeriesCheckedOutBy < 'admin'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutBy FROM cmis:document WHERE cmis:versionSeriesCheckedOutBy <= 'admin'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutBy FROM cmis:document WHERE cmis:versionSeriesCheckedOutBy > 'admin'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutBy FROM cmis:document WHERE cmis:versionSeriesCheckedOutBy >= 'admin'", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutBy FROM cmis:document WHERE cmis:versionSeriesCheckedOutBy IN ('admin')", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutBy FROM cmis:document WHERE cmis:versionSeriesCheckedOutBy NOT IN ('admin')", doc_count, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutBy FROM cmis:document WHERE cmis:versionSeriesCheckedOutBy LIKE 'admin'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutBy FROM cmis:document WHERE cmis:versionSeriesCheckedOutBy NOT LIKE 'admin'", doc_count, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutBy FROM cmis:document WHERE cmis:versionSeriesCheckedOutBy IS NOT NULL", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutBy FROM cmis:document WHERE cmis:versionSeriesCheckedOutBy IS NULL", doc_count, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutBy FROM cmis:document WHERE 'admin' = ANY cmis:versionSeriesCheckedOutBy", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutBy FROM cmis:document WHERE 'admin' <> ANY cmis:versionSeriesCheckedOutBy", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutBy FROM cmis:document WHERE 'admin' < ANY cmis:versionSeriesCheckedOutBy", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutBy FROM cmis:document WHERE 'admin' <= ANY cmis:versionSeriesCheckedOutBy", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutBy FROM cmis:document WHERE 'admin' > ANY cmis:versionSeriesCheckedOutBy", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutBy FROM cmis:document WHERE 'admin' >= ANY cmis:versionSeriesCheckedOutBy", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutBy FROM cmis:document WHERE ANY cmis:versionSeriesCheckedOutBy IN ('admin')", 0, false, "cmis:objectId", new String(),
|
|
true);
|
|
testQuery("SELECT cmis:versionSeriesCheckedOutBy FROM cmis:document WHERE ANY cmis:versionSeriesCheckedOutBy NOT IN ('admin')", doc_count, false, "cmis:objectId", new String(),
|
|
true);
|
|
}
|
|
|
|
public void test_IS_VERSION_SERIES_CHECKED_OUT() throws Exception
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM cmis:document", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(doc_count, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:isVersionSeriesCheckedOut");
|
|
Boolean value = DefaultTypeConverter.INSTANCE.convert(Boolean.class, sValue);
|
|
assertNotNull(value);
|
|
assertEquals(Boolean.FALSE, value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:isVersionSeriesCheckedOut");
|
|
assertNotNull(column);
|
|
assertEquals(PropertyType.BOOLEAN, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof IsVersionSeriesCheckedOutProperty);
|
|
}
|
|
rs.close();
|
|
|
|
testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document", doc_count, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE cmis:isVeriesSeriesCheckedOut = 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE cmis:isVeriesSeriesCheckedOut <> 'TRUE'", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE cmis:isVeriesSeriesCheckedOut < 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE cmis:isVeriesSeriesCheckedOut <= 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE cmis:isVeriesSeriesCheckedOut > 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE cmis:isVeriesSeriesCheckedOut >= 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE cmis:isVeriesSeriesCheckedOut IN ('TRUE')", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE cmis:isVeriesSeriesCheckedOut NOT IN ('TRUE')", doc_count, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE cmis:isVeriesSeriesCheckedOut LIKE 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE cmis:isVeriesSeriesCheckedOut NOT LIKE 'TRUE'", doc_count, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE cmis:isVeriesSeriesCheckedOut IS NOT NULL", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE cmis:isVeriesSeriesCheckedOut IS NULL", doc_count, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE 'TRUE' = ANY cmis:isVeriesSeriesCheckedOut", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE 'TRUE' <> ANY cmis:isVeriesSeriesCheckedOut", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE 'TRUE' < ANY cmis:isVeriesSeriesCheckedOut", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE 'TRUE' <= ANY cmis:isVeriesSeriesCheckedOut", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE 'TRUE' > ANY cmis:isVeriesSeriesCheckedOut", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE 'TRUE' >= ANY cmis:isVeriesSeriesCheckedOut", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE ANY cmis:isVeriesSeriesCheckedOut IN ('TRUE')", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE ANY cmis:isVeriesSeriesCheckedOut NOT IN ('TRUE')", doc_count, false, "cmis:objectId", new String(), true);
|
|
}
|
|
|
|
public void test_VERSION_SERIES_ID() throws Exception
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM cmis:document", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(doc_count, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:versionSeriesId");
|
|
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertNotNull(value);
|
|
assertEquals(row.getNodeRef().toString(), value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:versionSeriesId");
|
|
assertNotNull(column);
|
|
assertEquals(PropertyType.ID, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof VersionSeriesIdProperty);
|
|
}
|
|
rs.close();
|
|
|
|
testQuery("SELECT cmis:versionSeriesId FROM cmis:document", doc_count, false, "cmis:objectId", new String(), false);
|
|
|
|
|
|
testQuery("SELECT cmis:versionSeriesId FROM cmis:document WHERE cmis:versionSeriesId = 'company'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesId FROM cmis:document WHERE cmis:versionSeriesId <> 'company'", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesId FROM cmis:document WHERE cmis:versionSeriesId < 'company'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesId FROM cmis:document WHERE cmis:versionSeriesId <= 'company'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesId FROM cmis:document WHERE cmis:versionSeriesId > 'company'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesId FROM cmis:document WHERE cmis:versionSeriesId >= 'company'", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:versionSeriesId FROM cmis:document WHERE cmis:versionSeriesId IN ('company')", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesId FROM cmis:document WHERE cmis:versionSeriesId NOT IN ('company')", doc_count, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:versionSeriesId FROM cmis:document WHERE cmis:versionSeriesId LIKE 'company'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesId FROM cmis:document WHERE cmis:versionSeriesId NOT LIKE 'company'", doc_count, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:versionSeriesId FROM cmis:document WHERE cmis:versionSeriesId IS NOT NULL", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesId FROM cmis:document WHERE cmis:versionSeriesId IS NULL", doc_count, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:versionSeriesId FROM cmis:document WHERE 'company' = ANY cmis:versionSeriesId", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesId FROM cmis:document WHERE 'company' <> ANY cmis:versionSeriesId", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesId FROM cmis:document WHERE 'company' < ANY cmis:versionSeriesId", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesId FROM cmis:document WHERE 'company' <= ANY cmis:versionSeriesId", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesId FROM cmis:document WHERE 'company' > ANY cmis:versionSeriesId", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesId FROM cmis:document WHERE 'company' >= ANY cmis:versionSeriesId", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:versionSeriesId FROM cmis:document WHERE ANY cmis:versionSeriesId IN ('company')", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionSeriesId FROM cmis:document WHERE ANY cmis:versionSeriesId NOT IN ('company')", doc_count, false, "cmis:objectId", new String(), true);
|
|
}
|
|
|
|
public void test_VERSION_LABEL() throws Exception
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM cmis:document", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(doc_count, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:versionLabel");
|
|
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertNotNull(value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:versionLabel");
|
|
assertNotNull(column);
|
|
assertEquals(PropertyType.STRING, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof VersionLabelProperty);
|
|
}
|
|
rs.close();
|
|
|
|
testQuery("SELECT cmis:versionLabel FROM cmis:document", doc_count, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:versionLabel FROM cmis:document WHERE cmis:versionLabel = 'company'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionLabel FROM cmis:document WHERE cmis:versionLabel <> 'company'", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionLabel FROM cmis:document WHERE cmis:versionLabel < 'company'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionLabel FROM cmis:document WHERE cmis:versionLabel <= 'company'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionLabel FROM cmis:document WHERE cmis:versionLabel > 'company'", 1, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionLabel FROM cmis:document WHERE cmis:versionLabel >= 'company'", 1, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:versionLabel FROM cmis:document WHERE cmis:versionLabel IN ('company')", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionLabel FROM cmis:document WHERE cmis:versionLabel NOT IN ('company')", doc_count, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:versionLabel FROM cmis:document WHERE cmis:versionLabel LIKE 'company'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionLabel FROM cmis:document WHERE cmis:versionLabel NOT LIKE 'company'", doc_count, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:versionLabel FROM cmis:document WHERE cmis:versionLabel IS NOT NULL", 1, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionLabel FROM cmis:document WHERE cmis:versionLabel IS NULL", doc_count-1, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:versionLabel FROM cmis:document WHERE 'company' = ANY cmis:versionLabel", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionLabel FROM cmis:document WHERE 'company' <> ANY cmis:versionLabel", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionLabel FROM cmis:document WHERE 'company' < ANY cmis:versionLabel", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionLabel FROM cmis:document WHERE 'company' <= ANY cmis:versionLabel", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionLabel FROM cmis:document WHERE 'company' > ANY cmis:versionLabel", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionLabel FROM cmis:document WHERE 'company' >= ANY cmis:versionLabel", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:versionLabel FROM cmis:document WHERE ANY cmis:versionLabel IN ('company')", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:versionLabel FROM cmis:document WHERE ANY cmis:versionLabel NOT IN ('company')", doc_count, false, "cmis:objectId", new String(), true);
|
|
}
|
|
|
|
public void test_IS_LATEST_MAJOR_VERSION() throws Exception
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM cmis:document", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(doc_count, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:isLatestMajorVersion");
|
|
Boolean value = DefaultTypeConverter.INSTANCE.convert(Boolean.class, sValue);
|
|
assertNotNull(value);
|
|
assertEquals(Boolean.TRUE, value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:isLatestMajorVersion");
|
|
assertNotNull(column);
|
|
assertEquals(PropertyType.BOOLEAN, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof IsLatestMajorVersionProperty);
|
|
}
|
|
rs.close();
|
|
|
|
testQuery("SELECT cmis:isLatestMajorVersion FROM cmis:document", doc_count, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:isLatestMajorVersion FROM cmis:document WHERE cmis:isLatestMajorVersion = 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isLatestMajorVersion FROM cmis:document WHERE cmis:isLatestMajorVersion <> 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isLatestMajorVersion FROM cmis:document WHERE cmis:isLatestMajorVersion < 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isLatestMajorVersion FROM cmis:document WHERE cmis:isLatestMajorVersion <= 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isLatestMajorVersion FROM cmis:document WHERE cmis:isLatestMajorVersion > 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isLatestMajorVersion FROM cmis:document WHERE cmis:isLatestMajorVersion >= 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:isLatestMajorVersion FROM cmis:document WHERE cmis:isLatestMajorVersion IN ('TRUE')", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isLatestMajorVersion FROM cmis:document WHERE cmis:isLatestMajorVersion NOT IN ('TRUE')", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:isLatestMajorVersion FROM cmis:document WHERE cmis:isLatestMajorVersion LIKE 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isLatestMajorVersion FROM cmis:document WHERE cmis:isLatestMajorVersion NOT LIKE 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:isLatestMajorVersion FROM cmis:document WHERE cmis:isLatestMajorVersion IS NOT NULL", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isLatestMajorVersion FROM cmis:document WHERE cmis:isLatestMajorVersion IS NULL", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:isLatestMajorVersion FROM cmis:document WHERE 'TRUE' = ANY cmis:isLatestMajorVersion", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isLatestMajorVersion FROM cmis:document WHERE 'TRUE' <> ANY cmis:isLatestMajorVersion", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isLatestMajorVersion FROM cmis:document WHERE 'TRUE' < ANY cmis:isLatestMajorVersion", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isLatestMajorVersion FROM cmis:document WHERE 'TRUE' <= ANY cmis:isLatestMajorVersion", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isLatestMajorVersion FROM cmis:document WHERE 'TRUE' > ANY cmis:isLatestMajorVersion", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isLatestMajorVersion FROM cmis:document WHERE 'TRUE' >= ANY cmis:isLatestMajorVersion", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:isLatestMajorVersion FROM cmis:document WHERE ANY cmis:isLatestMajorVersion IN ('TRUE')", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isLatestMajorVersion FROM cmis:document WHERE ANY cmis:isLatestMajorVersion NOT IN ('TRUE')", 0, false, "cmis:objectId", new String(), true);
|
|
}
|
|
|
|
public void test_IS_MAJOR_VERSION() throws Exception
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM cmis:document", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(doc_count, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:isMajorVersion");
|
|
Boolean value = DefaultTypeConverter.INSTANCE.convert(Boolean.class, sValue);
|
|
assertNotNull(value);
|
|
assertEquals(Boolean.TRUE, value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:isMajorVersion");
|
|
assertNotNull(column);
|
|
assertEquals(PropertyType.BOOLEAN, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof IsMajorVersionProperty);
|
|
}
|
|
rs.close();
|
|
|
|
testQuery("SELECT cmis:isMajorVersion FROM cmis:document", doc_count, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:isMajorVersion FROM cmis:document WHERE cmis:isMajorVersion = TRUE", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isMajorVersion FROM cmis:document WHERE cmis:isMajorVersion = true", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isMajorVersion FROM cmis:document WHERE cmis:isMajorVersion = FALSE", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isMajorVersion FROM cmis:document WHERE cmis:isMajorVersion = false", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isMajorVersion FROM cmis:document WHERE cmis:isMajorVersion <> 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isMajorVersion FROM cmis:document WHERE cmis:isMajorVersion < 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isMajorVersion FROM cmis:document WHERE cmis:isMajorVersion <= 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isMajorVersion FROM cmis:document WHERE cmis:isMajorVersion > 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isMajorVersion FROM cmis:document WHERE cmis:isMajorVersion >= 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:isMajorVersion FROM cmis:document WHERE cmis:isMajorVersion IN ('TRUE')", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isMajorVersion FROM cmis:document WHERE cmis:isMajorVersion NOT IN ('TRUE')", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:isMajorVersion FROM cmis:document WHERE cmis:isMajorVersion LIKE 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isMajorVersion FROM cmis:document WHERE cmis:isMajorVersion NOT LIKE 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:isMajorVersion FROM cmis:document WHERE cmis:isMajorVersion IS NOT NULL", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isMajorVersion FROM cmis:document WHERE cmis:isMajorVersion IS NULL", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:isMajorVersion FROM cmis:document WHERE 'TRUE' = ANY cmis:isMajorVersion", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isMajorVersion FROM cmis:document WHERE 'TRUE' <> ANY cmis:isMajorVersion", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isMajorVersion FROM cmis:document WHERE 'TRUE' < ANY cmis:isMajorVersion", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isMajorVersion FROM cmis:document WHERE 'TRUE' <= ANY cmis:isMajorVersion", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isMajorVersion FROM cmis:document WHERE 'TRUE' > ANY cmis:isMajorVersion", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isMajorVersion FROM cmis:document WHERE 'TRUE' >= ANY cmis:isMajorVersion", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:isMajorVersion FROM cmis:document WHERE ANY cmis:isMajorVersion IN ('TRUE')", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isMajorVersion FROM cmis:document WHERE ANY cmis:isMajorVersion NOT IN ('TRUE')", 0, false, "cmis:objectId", new String(), true);
|
|
}
|
|
|
|
public void test_IS_LATEST_VERSION() throws Exception
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM cmis:document", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(doc_count, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:isLatestVersion");
|
|
Boolean value = DefaultTypeConverter.INSTANCE.convert(Boolean.class, sValue);
|
|
assertNotNull(value);
|
|
assertEquals(Boolean.TRUE, value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:isLatestVersion");
|
|
assertNotNull(column);
|
|
assertEquals(PropertyType.BOOLEAN, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof IsLatestVersionProperty);
|
|
}
|
|
rs.close();
|
|
|
|
testQuery("SELECT cmis:isLatestVersion FROM cmis:document", doc_count, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:isLatestVersion FROM cmis:document WHERE cmis:isLatestVersion = 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isLatestVersion FROM cmis:document WHERE cmis:isLatestVersion <> 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isLatestVersion FROM cmis:document WHERE cmis:isLatestVersion < 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isLatestVersion FROM cmis:document WHERE cmis:isLatestVersion <= 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isLatestVersion FROM cmis:document WHERE cmis:isLatestVersion > 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isLatestVersion FROM cmis:document WHERE cmis:isLatestVersion >= 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:isLatestVersion FROM cmis:document WHERE cmis:isLatestVersion IN ('TRUE')", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isLatestVersion FROM cmis:document WHERE cmis:isLatestVersion NOT IN ('TRUE')", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:isLatestVersion FROM cmis:document WHERE cmis:isLatestVersion LIKE 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isLatestVersion FROM cmis:document WHERE cmis:isLatestVersion NOT LIKE 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:isLatestVersion FROM cmis:document WHERE cmis:isLatestVersion IS NOT NULL", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isLatestVersion FROM cmis:document WHERE cmis:isLatestVersion IS NULL", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:isLatestVersion FROM cmis:document WHERE 'TRUE' = ANY cmis:isLatestVersion", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isLatestVersion FROM cmis:document WHERE 'TRUE' <> ANY cmis:isLatestVersion", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isLatestVersion FROM cmis:document WHERE 'TRUE' < ANY cmis:isLatestVersion", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isLatestVersion FROM cmis:document WHERE 'TRUE' <= ANY cmis:isLatestVersion", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isLatestVersion FROM cmis:document WHERE 'TRUE' > ANY cmis:isLatestVersion", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isLatestVersion FROM cmis:document WHERE 'TRUE' >= ANY cmis:isLatestVersion", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:isLatestVersion FROM cmis:document WHERE ANY cmis:isLatestVersion IN ('TRUE')", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isLatestVersion FROM cmis:document WHERE ANY cmis:isLatestVersion NOT IN ('TRUE')", 0, false, "cmis:objectId", new String(), true);
|
|
}
|
|
|
|
public void test_IS_IMMUTABLE() throws Exception
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM cmis:document", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(doc_count, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:isImmutable");
|
|
Boolean value = DefaultTypeConverter.INSTANCE.convert(Boolean.class, sValue);
|
|
assertNotNull(value);
|
|
assertEquals(Boolean.FALSE, value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:isImmutable");
|
|
assertNotNull(column);
|
|
assertEquals(PropertyType.BOOLEAN, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof IsImmutableProperty);
|
|
}
|
|
rs.close();
|
|
|
|
testQuery("SELECT cmis:isImmutable FROM cmis:document", doc_count, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:isImmutable FROM cmis:document WHERE cmis:isImmutable = 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isImmutable FROM cmis:document WHERE cmis:isImmutable <> 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isImmutable FROM cmis:document WHERE cmis:isImmutable < 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isImmutable FROM cmis:document WHERE cmis:isImmutable <= 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isImmutable FROM cmis:document WHERE cmis:isImmutable > 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isImmutable FROM cmis:document WHERE cmis:isImmutable >= 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:isImmutable FROM cmis:document WHERE cmis:isImmutable IN ('TRUE')", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isImmutable FROM cmis:document WHERE cmis:isImmutable NOT IN ('TRUE')", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:isImmutable FROM cmis:document WHERE cmis:isImmutable LIKE 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isImmutable FROM cmis:document WHERE cmis:isImmutable NOT LIKE 'TRUE'", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:isImmutable FROM cmis:document WHERE cmis:isImmutable IS NOT NULL", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isImmutable FROM cmis:document WHERE cmis:isImmutable IS NULL", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:isImmutable FROM cmis:document WHERE 'TRUE' = ANY cmis:isImmutable", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isImmutable FROM cmis:document WHERE 'TRUE' <> ANY cmis:isImmutable", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isImmutable FROM cmis:document WHERE 'TRUE' < ANY cmis:isImmutable", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isImmutable FROM cmis:document WHERE 'TRUE' <= ANY cmis:isImmutable", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isImmutable FROM cmis:document WHERE 'TRUE' > ANY cmis:isImmutable", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isImmutable FROM cmis:document WHERE 'TRUE' >= ANY cmis:isImmutable", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:isImmutable FROM cmis:document WHERE ANY cmis:isImmutable IN ('TRUE')", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:isImmutable FROM cmis:document WHERE ANY cmis:isImmutable NOT IN ('TRUE')", 0, false, "cmis:objectId", new String(), true);
|
|
}
|
|
|
|
public void test_folder_NAME() throws Exception
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM cmis:folder", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(folder_count, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:name");
|
|
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertNotNull(value);
|
|
// assertEquals(Boolean.TRUE, value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:name");
|
|
assertNotNull(column);
|
|
assertEquals(PropertyType.STRING, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof NameProperty);
|
|
}
|
|
rs.close();
|
|
|
|
options = new CMISQueryOptions("SELECT * FROM cmis:folder WHERE cmis:name = 'Folder 1'", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
rs = cmisQueryService.query(options);
|
|
assertEquals(1, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:name");
|
|
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertNotNull(value);
|
|
assertEquals("Folder 1", value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:name");
|
|
assertEquals(PropertyType.STRING, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof NameProperty);
|
|
}
|
|
rs.close();
|
|
|
|
testQuery("SELECT cmis:name FROM cmis:folder WHERE cmis:name = 'Folder 1'", 1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:folder WHERE cmis:name <> 'Folder 1'", folder_count-1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:folder WHERE cmis:name < 'Folder 1'", 2, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:folder WHERE cmis:name <= 'Folder 1'", 3, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:folder WHERE cmis:name > 'Folder 1'", folder_count-3, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:folder WHERE cmis:name >= 'Folder 1'", folder_count-2, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:name FROM cmis:folder WHERE cmis:name IN ('Folder 1')", 1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:folder WHERE cmis:name NOT IN ('Folder 1')", folder_count-1, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:name FROM cmis:folder WHERE cmis:name LIKE 'Folder 1'", 1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:folder WHERE cmis:name NOT LIKE 'Folder 1'", folder_count-1, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:name FROM cmis:folder WHERE cmis:name IS NOT NULL", folder_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:folder WHERE cmis:name IS NULL", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:name FROM cmis:folder WHERE 'Folder 1' = ANY cmis:name", 1, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:name FROM cmis:folder WHERE 'Folder 1' <> ANY cmis:name", folder_count-1, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:name FROM cmis:folder WHERE 'Folder 1' < ANY cmis:name", 1, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:name FROM cmis:folder WHERE 'Folder 1' <= ANY cmis:name", 2, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:name FROM cmis:folder WHERE 'Folder 1' > ANY cmis:name", 8, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:name FROM cmis:folder WHERE 'Folder 1' >= ANY cmis:name", 9, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:name FROM cmis:folder WHERE ANY cmis:name IN ('Folder 1')", 1, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:name FROM cmis:folder WHERE ANY cmis:name NOT IN ('Folder 1')", 9, false, "cmis:objectId", new String(), true);
|
|
}
|
|
|
|
public void test_document_Name() throws Exception
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM cmis:document", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(doc_count, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:name");
|
|
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertNotNull(value);
|
|
// assertEquals(Boolean.TRUE, value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:name");
|
|
assertNotNull(column);
|
|
assertEquals(PropertyType.STRING, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof NameProperty);
|
|
}
|
|
rs.close();
|
|
|
|
options = new CMISQueryOptions("SELECT * FROM cmis:document WHERE cmis:name = 'Alfresco Tutorial'", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
rs = cmisQueryService.query(options);
|
|
assertEquals(1, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:name");
|
|
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertNotNull(value);
|
|
assertEquals("Alfresco Tutorial", value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:name");
|
|
assertEquals(PropertyType.STRING, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof NameProperty);
|
|
}
|
|
rs.close();
|
|
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name = 'Alfresco Tutorial'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name <> 'Alfresco Tutorial'", doc_count-1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name < 'Alfresco Tutorial'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name <= 'Alfresco Tutorial'", 2, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name > 'Alfresco Tutorial'", doc_count-2, true, "cmis:name", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name >= 'Alfresco Tutorial'", doc_count-1, false, "cmis:name", new String(), false);
|
|
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name IN ('Alfresco Tutorial')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name NOT IN ('Alfresco Tutorial')", doc_count-1, false, "cmis:name", new String(), false);
|
|
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name LIKE 'Alfresco Tutorial'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name NOT LIKE 'Alfresco Tutorial'", doc_count-1, false, "cmis:name", new String(), false);
|
|
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name IS NOT NULL", doc_count, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name IS NULL", 0, false, "cmis:name", new String(), false);
|
|
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE 'Alfresco Tutorial' = ANY cmis:name", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE 'Alfresco Tutorial' <> ANY cmis:name", doc_count-1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE 'Alfresco Tutorial' < ANY cmis:name", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE 'Alfresco Tutorial' <= ANY cmis:name", 2, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE 'Alfresco Tutorial' > ANY cmis:name", doc_count-2, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE 'Alfresco Tutorial' >= ANY cmis:name", doc_count-1, false, "cmis:name", new String(), true);
|
|
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE ANY cmis:name IN ('Alfresco Tutorial')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE ANY cmis:name NOT IN ('Alfresco Tutorial')", doc_count-1, false, "cmis:name", new String(), true);
|
|
}
|
|
|
|
public void test_CHANGE_TOKEN() throws Exception
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM cmis:document", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(doc_count, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:changeToken");
|
|
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertNull(value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:changeToken");
|
|
assertNotNull(column);
|
|
assertEquals(PropertyType.STRING, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof FixedValueProperty);
|
|
}
|
|
rs.close();
|
|
|
|
testQuery("SELECT cmis:changeToken FROM cmis:folder", folder_count, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:changeToken FROM cmis:folder WHERE cmis:changeToken = 'test'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:changeToken FROM cmis:folder WHERE cmis:changeToken <> 'test'", 10, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:changeToken FROM cmis:folder WHERE cmis:changeToken < 'test'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:changeToken FROM cmis:folder WHERE cmis:changeToken <= 'test'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:changeToken FROM cmis:folder WHERE cmis:changeToken > 'test'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:changeToken FROM cmis:folder WHERE cmis:changeToken >= 'test'", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:changeToken FROM cmis:folder WHERE cmis:changeToken IN ('test')", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:changeToken FROM cmis:folder WHERE cmis:changeToken NOT IN ('test')", 10, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:changeToken FROM cmis:folder WHERE cmis:changeToken LIKE 'test'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:changeToken FROM cmis:folder WHERE cmis:changeToken NOT LIKE 'test'", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:changeToken FROM cmis:folder WHERE cmis:changeToken IS NOT NULL", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:changeToken FROM cmis:folder WHERE cmis:changeToken IS NULL", 10, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:changeToken FROM cmis:folder WHERE 'test' = ANY cmis:changeToken", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:changeToken FROM cmis:folder WHERE 'test' <> ANY cmis:changeToken", 10, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:changeToken FROM cmis:folder WHERE 'test' < ANY cmis:changeToken", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:changeToken FROM cmis:folder WHERE 'test' <= ANY cmis:changeToken", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:changeToken FROM cmis:folder WHERE 'test' > ANY cmis:changeToken", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:changeToken FROM cmis:folder WHERE 'test' >= ANY cmis:changeToken", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:changeToken FROM cmis:folder WHERE ANY cmis:changeToken IN ('test')", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:changeToken FROM cmis:folder WHERE ANY cmis:changeToken NOT IN ('test')", 10, false, "cmis:objectId", new String(), true);
|
|
}
|
|
|
|
public void test_LAST_MODIFICATION_DATE() throws Exception
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM cmis:document", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(doc_count, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:lastModificationDate");
|
|
Date value = DefaultTypeConverter.INSTANCE.convert(Date.class, sValue);
|
|
assertNotNull(value);
|
|
// assertEquals(Boolean.TRUE, value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:lastModificationDate");
|
|
assertNotNull(column);
|
|
assertEquals(PropertyType.DATETIME, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof ModificationDateProperty);
|
|
}
|
|
rs.close();
|
|
|
|
// By default we are only working to the day
|
|
|
|
Calendar today = Calendar.getInstance();
|
|
|
|
if ((today.get(Calendar.HOUR_OF_DAY) == 0) || (today.get(Calendar.HOUR_OF_DAY) == 23))
|
|
{
|
|
return;
|
|
}
|
|
|
|
SimpleDateFormat df = CachingDateFormat.getDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", true);
|
|
|
|
Date lmd0 = DefaultTypeConverter.INSTANCE.convert(Date.class, nodeService.getProperty(c0, ContentModel.PROP_MODIFIED));
|
|
String lmds0 = df.format(lmd0);
|
|
options = new CMISQueryOptions("SELECT * FROM cmis:document WHERE cmis:lastModificationDate = TIMESTAMP '" + lmds0 + "' and cmis:objectId = '" + c0.toString() + "'",
|
|
rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
rs = cmisQueryService.query(options);
|
|
assertEquals(1, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:lastModificationDate");
|
|
Date value = DefaultTypeConverter.INSTANCE.convert(Date.class, sValue);
|
|
assertNotNull(value);
|
|
assertEquals(lmd0, value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:lastModificationDate");
|
|
assertEquals(PropertyType.DATETIME, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof ModificationDateProperty);
|
|
}
|
|
rs.close();
|
|
|
|
Date date = testQuery("SELECT cmis:lastModificationDate FROM cmis:document", -1, false, "cmis:lastModificationDate", new Date(), false);
|
|
today.setTime(date);
|
|
if(!usesDateTimeAnalyser)
|
|
{
|
|
today.set(Calendar.MILLISECOND, today.getMinimum(Calendar.MILLISECOND));
|
|
}
|
|
|
|
String sDate = df.format(today.getTime());
|
|
String sDate2 = sDate.substring(0, sDate.length() - 1) + "+00:00";
|
|
|
|
// Today (assuming al ws created today)
|
|
|
|
if(usesDateTimeAnalyser)
|
|
{
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate = TIMESTAMP '" + sDate + "'", 1, false, "cmis:objectId", new String(),
|
|
false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate = TIMESTAMP '" + sDate2 + "'", 1, false, "cmis:objectId", new String(),
|
|
false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate <> '" + sDate + "'", doc_count-1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate < '" + sDate + "'", doc_count-1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate <= '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate > '" + sDate + "'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate >= '" + sDate + "'", 1, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate IN ('" + sDate + "')", 1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate NOT IN ('" + sDate + "')", doc_count-1, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate LIKE '" + sDate + "'", 1, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate NOT LIKE '" + sDate + "'", doc_count-1, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate IS NOT NULL", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate IS NULL", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE '" + sDate + "' = ANY cmis:lastModificationDate", 1, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE '" + sDate + "' <> ANY cmis:lastModificationDate", doc_count-1, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE '" + sDate + "' < ANY cmis:lastModificationDate", doc_count-1, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE '" + sDate + "' <= ANY cmis:lastModificationDate", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE '" + sDate + "' > ANY cmis:lastModificationDate", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE '" + sDate + "' >= ANY cmis:lastModificationDate", 1, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE ANY cmis:lastModificationDate IN ('" + sDate + "')", 1, false, "cmis:objectId", new String(),
|
|
true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE ANY cmis:lastModificationDate NOT IN ('" + sDate + "')", doc_count-1, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE ANY cmis:lastModificationDate NOT IN ('" + sDate + "') order by cmis:lastModificationDate", doc_count-1, false,
|
|
"cmis:objectId", new String(), true);
|
|
|
|
// using yesterday
|
|
|
|
date = Duration.subtract(date, new Duration("P1D"));
|
|
Calendar yesterday = Calendar.getInstance();
|
|
yesterday.setTime(date);
|
|
yesterday.set(Calendar.MILLISECOND, today.getMinimum(Calendar.MILLISECOND));
|
|
sDate = df.format(yesterday.getTime());
|
|
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate = '" + sDate + "'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate <> '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate < '" + sDate + "'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate <= '" + sDate + "'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate > '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate >= '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate IN ('" + sDate + "')", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate NOT IN ('" + sDate + "')", doc_count, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate LIKE '" + sDate + "'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate NOT LIKE '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate IS NOT NULL", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate IS NULL", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE '" + sDate + "' = ANY cmis:lastModificationDate", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE '" + sDate + "' <> ANY cmis:lastModificationDate", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE '" + sDate + "' < ANY cmis:lastModificationDate", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE '" + sDate + "' <= ANY cmis:lastModificationDate", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE '" + sDate + "' > ANY cmis:lastModificationDate", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE '" + sDate + "' >= ANY cmis:lastModificationDate", doc_count, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE ANY cmis:lastModificationDate IN ('" + sDate + "')", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE ANY cmis:lastModificationDate NOT IN ('" + sDate + "')", doc_count, false, "cmis:objectId", new String(),
|
|
true);
|
|
|
|
// using tomorrow
|
|
|
|
date = Duration.add(date, new Duration("P2D"));
|
|
Calendar tomorrow = Calendar.getInstance();
|
|
tomorrow.setTime(date);
|
|
tomorrow.set(Calendar.MILLISECOND, today.getMinimum(Calendar.MILLISECOND));
|
|
sDate = df.format(tomorrow.getTime());
|
|
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate = '" + sDate + "'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate <> '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate < '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate <= '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate > '" + sDate + "'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate >= '" + sDate + "'", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate IN ('" + sDate + "')", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate NOT IN ('" + sDate + "')", doc_count, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate LIKE '" + sDate + "'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate NOT LIKE '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate IS NOT NULL", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate IS NULL", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE '" + sDate + "' = ANY cmis:lastModificationDate", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE '" + sDate + "' <> ANY cmis:lastModificationDate", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE '" + sDate + "' < ANY cmis:lastModificationDate", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE '" + sDate + "' <= ANY cmis:lastModificationDate", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE '" + sDate + "' > ANY cmis:lastModificationDate", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE '" + sDate + "' >= ANY cmis:lastModificationDate", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE ANY cmis:lastModificationDate IN ('" + sDate + "')", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE ANY cmis:lastModificationDate NOT IN ('" + sDate + "')", doc_count, false, "cmis:objectId", new String(),
|
|
true);
|
|
}
|
|
else
|
|
{
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate = TIMESTAMP '" + sDate + "'", doc_count, false, "cmis:objectId", new String(),
|
|
false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate = TIMESTAMP '" + sDate2 + "'", doc_count, false, "cmis:objectId", new String(),
|
|
false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate <> '" + sDate + "'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate < '" + sDate + "'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate <= '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate > '" + sDate + "'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate >= '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate IN ('" + sDate + "')", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate NOT IN ('" + sDate + "')", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate LIKE '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate NOT LIKE '" + sDate + "'", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate IS NOT NULL", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate IS NULL", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE '" + sDate + "' = ANY cmis:lastModificationDate", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE '" + sDate + "' <> ANY cmis:lastModificationDate", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE '" + sDate + "' < ANY cmis:lastModificationDate", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE '" + sDate + "' <= ANY cmis:lastModificationDate", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE '" + sDate + "' > ANY cmis:lastModificationDate", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE '" + sDate + "' >= ANY cmis:lastModificationDate", doc_count, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE ANY cmis:lastModificationDate IN ('" + sDate + "')", doc_count, false, "cmis:objectId", new String(),
|
|
true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE ANY cmis:lastModificationDate NOT IN ('" + sDate + "')", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE ANY cmis:lastModificationDate NOT IN ('" + sDate + "') order by cmis:lastModificationDate", 0, false,
|
|
"cmis:objectId", new String(), true);
|
|
|
|
// using yesterday
|
|
|
|
date = Duration.subtract(date, new Duration("P1D"));
|
|
Calendar yesterday = Calendar.getInstance();
|
|
yesterday.setTime(date);
|
|
yesterday.set(Calendar.MILLISECOND, today.getMinimum(Calendar.MILLISECOND));
|
|
sDate = df.format(yesterday.getTime());
|
|
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate = '" + sDate + "'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate <> '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate < '" + sDate + "'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate <= '" + sDate + "'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate > '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate >= '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate IN ('" + sDate + "')", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate NOT IN ('" + sDate + "')", doc_count, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate LIKE '" + sDate + "'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate NOT LIKE '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate IS NOT NULL", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate IS NULL", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE '" + sDate + "' = ANY cmis:lastModificationDate", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE '" + sDate + "' <> ANY cmis:lastModificationDate", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE '" + sDate + "' < ANY cmis:lastModificationDate", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE '" + sDate + "' <= ANY cmis:lastModificationDate", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE '" + sDate + "' > ANY cmis:lastModificationDate", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE '" + sDate + "' >= ANY cmis:lastModificationDate", doc_count, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE ANY cmis:lastModificationDate IN ('" + sDate + "')", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE ANY cmis:lastModificationDate NOT IN ('" + sDate + "')", doc_count, false, "cmis:objectId", new String(),
|
|
true);
|
|
|
|
// using tomorrow
|
|
|
|
date = Duration.add(date, new Duration("P2D"));
|
|
Calendar tomorrow = Calendar.getInstance();
|
|
tomorrow.setTime(date);
|
|
tomorrow.set(Calendar.MILLISECOND, today.getMinimum(Calendar.MILLISECOND));
|
|
sDate = df.format(tomorrow.getTime());
|
|
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate = '" + sDate + "'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate <> '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate < '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate <= '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate > '" + sDate + "'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate >= '" + sDate + "'", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate IN ('" + sDate + "')", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate NOT IN ('" + sDate + "')", doc_count, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate LIKE '" + sDate + "'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate NOT LIKE '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate IS NOT NULL", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE cmis:lastModificationDate IS NULL", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE '" + sDate + "' = ANY cmis:lastModificationDate", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE '" + sDate + "' <> ANY cmis:lastModificationDate", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE '" + sDate + "' < ANY cmis:lastModificationDate", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE '" + sDate + "' <= ANY cmis:lastModificationDate", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE '" + sDate + "' > ANY cmis:lastModificationDate", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE '" + sDate + "' >= ANY cmis:lastModificationDate", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE ANY cmis:lastModificationDate IN ('" + sDate + "')", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModificationDate FROM cmis:document WHERE ANY cmis:lastModificationDate NOT IN ('" + sDate + "')", doc_count, false, "cmis:objectId", new String(),
|
|
true);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
public void test_LAST_MODIFIED_BY() throws Exception
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM cmis:document", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(doc_count, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:lastModifiedBy");
|
|
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertNotNull(value);
|
|
// assertEquals(Boolean.TRUE, value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:lastModifiedBy");
|
|
assertNotNull(column);
|
|
assertEquals(PropertyType.STRING, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof DirectProperty);
|
|
}
|
|
rs.close();
|
|
|
|
options = new CMISQueryOptions("SELECT * FROM cmis:document WHERE cmis:lastModifiedBy = 'System'", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
rs = cmisQueryService.query(options);
|
|
assertEquals(doc_count, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:lastModifiedBy");
|
|
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertNotNull(value);
|
|
assertEquals("System", value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:lastModifiedBy");
|
|
assertEquals(PropertyType.STRING, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof DirectProperty);
|
|
}
|
|
rs.close();
|
|
|
|
testQuery("SELECT cmis:lastModifiedBy FROM cmis:document WHERE cmis:lastModifiedBy = 'System'", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModifiedBy FROM cmis:document WHERE cmis:lastModifiedBy <> 'System'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModifiedBy FROM cmis:document WHERE cmis:lastModifiedBy < 'System'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModifiedBy FROM cmis:document WHERE cmis:lastModifiedBy <= 'System'", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModifiedBy FROM cmis:document WHERE cmis:lastModifiedBy > 'System'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModifiedBy FROM cmis:document WHERE cmis:lastModifiedBy >= 'System'", doc_count, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:lastModifiedBy FROM cmis:document WHERE cmis:lastModifiedBy IN ('System')", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModifiedBy FROM cmis:document WHERE cmis:lastModifiedBy NOT IN ('System')", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:lastModifiedBy FROM cmis:document WHERE cmis:lastModifiedBy LIKE 'System'", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModifiedBy FROM cmis:document WHERE cmis:lastModifiedBy NOT LIKE 'System'", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:lastModifiedBy FROM cmis:document WHERE cmis:lastModifiedBy IS NOT NULL", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:lastModifiedBy FROM cmis:document WHERE cmis:lastModifiedBy IS NULL", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:lastModifiedBy FROM cmis:document WHERE 'System' = ANY cmis:lastModifiedBy", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModifiedBy FROM cmis:document WHERE 'System' <> ANY cmis:lastModifiedBy", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModifiedBy FROM cmis:document WHERE 'System' < ANY cmis:lastModifiedBy", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModifiedBy FROM cmis:document WHERE 'System' <= ANY cmis:lastModifiedBy", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModifiedBy FROM cmis:document WHERE 'System' > ANY cmis:lastModifiedBy", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModifiedBy FROM cmis:document WHERE 'System' >= ANY cmis:lastModifiedBy", doc_count, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:lastModifiedBy FROM cmis:document WHERE ANY cmis:lastModifiedBy IN ('System')", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:lastModifiedBy FROM cmis:document WHERE ANY cmis:lastModifiedBy NOT IN ('System')", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:lastModifiedBy FROM cmis:document WHERE ANY cmis:lastModifiedBy NOT IN ('System') order by cmis:lastModifiedBy", 0, true, "cmis:objectId",
|
|
new String(), true);
|
|
}
|
|
|
|
public void test_CREATION_DATE() throws Exception
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM cmis:document", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(doc_count, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:creationDate");
|
|
Date value = DefaultTypeConverter.INSTANCE.convert(Date.class, sValue);
|
|
assertNotNull(value);
|
|
// assertEquals(Boolean.TRUE, value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:creationDate");
|
|
assertNotNull(column);
|
|
assertEquals(PropertyType.DATETIME, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof CreationDateProperty);
|
|
}
|
|
rs.close();
|
|
|
|
// By default we are only working to the day
|
|
|
|
Calendar today = Calendar.getInstance();
|
|
|
|
if ((today.get(Calendar.HOUR_OF_DAY) == 0) || (today.get(Calendar.HOUR_OF_DAY) == 23))
|
|
{
|
|
return;
|
|
}
|
|
|
|
SimpleDateFormat df = CachingDateFormat.getDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", true);
|
|
|
|
Date cd0 = DefaultTypeConverter.INSTANCE.convert(Date.class, nodeService.getProperty(c0, ContentModel.PROP_CREATED));
|
|
String cds0 = df.format(cd0);
|
|
options = new CMISQueryOptions("SELECT * FROM cmis:document WHERE cmis:creationDate = TIMESTAMP '" + cds0 + "' and cmis:objectId = '" + c0.toString() + "'", rootNodeRef
|
|
.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
rs = cmisQueryService.query(options);
|
|
assertEquals(1, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:creationDate");
|
|
Date value = DefaultTypeConverter.INSTANCE.convert(Date.class, sValue);
|
|
assertNotNull(value);
|
|
assertEquals(cd0, value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:creationDate");
|
|
assertEquals(PropertyType.DATETIME, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof CreationDateProperty);
|
|
}
|
|
rs.close();
|
|
|
|
Date date = testQuery("SELECT cmis:creationDate FROM cmis:document", -1, false, "cmis:creationDate", new Date(), false);
|
|
today.setTime(date);
|
|
|
|
// start.set(Calendar.YEAR, start.getMinimum(Calendar.YEAR));
|
|
// start.set(Calendar.DAY_OF_YEAR, start.getMinimum(Calendar.DAY_OF_YEAR));
|
|
// start.set(Calendar.HOUR_OF_DAY, start.getMinimum(Calendar.HOUR_OF_DAY));
|
|
// start.set(Calendar.MINUTE, start.getMinimum(Calendar.MINUTE));
|
|
// start.set(Calendar.SECOND, start.getMinimum(Calendar.SECOND));
|
|
if(!usesDateTimeAnalyser)
|
|
{
|
|
today.set(Calendar.MILLISECOND, today.getMinimum(Calendar.MILLISECOND));
|
|
}
|
|
|
|
String sDate = df.format(today.getTime());
|
|
|
|
// Today (assuming al ws created today)
|
|
|
|
if(usesDateTimeAnalyser)
|
|
{
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate = '" + sDate + "'", 1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate <> '" + sDate + "'", doc_count-1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate < '" + sDate + "'", doc_count-1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate <= '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate > '" + sDate + "'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate >= '" + sDate + "'", 1, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate IN ('" + sDate + "')", 1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate NOT IN ('" + sDate + "')", doc_count-1, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate LIKE '" + sDate + "'", 1, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate NOT LIKE '" + sDate + "'", doc_count-1, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate IS NOT NULL", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate IS NULL", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE '" + sDate + "' = ANY cmis:creationDate", 1, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE '" + sDate + "' <> ANY cmis:creationDate", doc_count-1, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE '" + sDate + "' < ANY cmis:creationDate", doc_count-1, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE '" + sDate + "' <= ANY cmis:creationDate", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE '" + sDate + "' > ANY cmis:creationDate", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE '" + sDate + "' >= ANY cmis:creationDate", 1, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE ANY cmis:creationDate IN ('" + sDate + "')", 1, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE ANY cmis:creationDate NOT IN ('" + sDate + "')", doc_count-1, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE ANY cmis:creationDate NOT IN ('" + sDate + "') order by cmis:creationDate", doc_count-1, false, "cmis:objectId",
|
|
new String(), true);
|
|
|
|
// using yesterday
|
|
|
|
date = Duration.subtract(date, new Duration("P1D"));
|
|
Calendar yesterday = Calendar.getInstance();
|
|
yesterday.setTime(date);
|
|
yesterday.set(Calendar.MILLISECOND, today.getMinimum(Calendar.MILLISECOND));
|
|
sDate = df.format(yesterday.getTime());
|
|
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate = '" + sDate + "'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate <> '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate < '" + sDate + "'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate <= '" + sDate + "'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate > '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate >= '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate IN ('" + sDate + "')", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate NOT IN ('" + sDate + "')", doc_count, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate LIKE '" + sDate + "'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate NOT LIKE '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate IS NOT NULL", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate IS NULL", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE '" + sDate + "' = ANY cmis:creationDate", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE '" + sDate + "' <> ANY cmis:creationDate", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE '" + sDate + "' < ANY cmis:creationDate", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE '" + sDate + "' <= ANY cmis:creationDate", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE '" + sDate + "' > ANY cmis:creationDate", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE '" + sDate + "' >= ANY cmis:creationDate", doc_count, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE ANY cmis:creationDate IN ('" + sDate + "')", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE ANY cmis:creationDate NOT IN ('" + sDate + "')", doc_count, false, "cmis:objectId", new String(), true);
|
|
|
|
// using tomorrow
|
|
|
|
date = Duration.add(date, new Duration("P2D"));
|
|
Calendar tomorrow = Calendar.getInstance();
|
|
tomorrow.setTime(date);
|
|
tomorrow.set(Calendar.MILLISECOND, today.getMinimum(Calendar.MILLISECOND));
|
|
sDate = df.format(tomorrow.getTime());
|
|
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate = '" + sDate + "'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate <> '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate < '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate <= '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate > '" + sDate + "'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate >= '" + sDate + "'", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate IN ('" + sDate + "')", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate NOT IN ('" + sDate + "')", doc_count, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate LIKE '" + sDate + "'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate NOT LIKE '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate IS NOT NULL", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate IS NULL", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE '" + sDate + "' = ANY cmis:creationDate", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE '" + sDate + "' <> ANY cmis:creationDate", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE '" + sDate + "' < ANY cmis:creationDate", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE '" + sDate + "' <= ANY cmis:creationDate", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE '" + sDate + "' > ANY cmis:creationDate", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE '" + sDate + "' >= ANY cmis:creationDate", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE ANY cmis:creationDate IN ('" + sDate + "')", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE ANY cmis:creationDate NOT IN ('" + sDate + "')", doc_count, false, "cmis:objectId", new String(), true);
|
|
}
|
|
else
|
|
{
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate = '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate <> '" + sDate + "'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate < '" + sDate + "'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate <= '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate > '" + sDate + "'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate >= '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate IN ('" + sDate + "')", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate NOT IN ('" + sDate + "')", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate LIKE '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate NOT LIKE '" + sDate + "'", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate IS NOT NULL", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate IS NULL", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE '" + sDate + "' = ANY cmis:creationDate", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE '" + sDate + "' <> ANY cmis:creationDate", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE '" + sDate + "' < ANY cmis:creationDate", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE '" + sDate + "' <= ANY cmis:creationDate", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE '" + sDate + "' > ANY cmis:creationDate", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE '" + sDate + "' >= ANY cmis:creationDate", doc_count, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE ANY cmis:creationDate IN ('" + sDate + "')", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE ANY cmis:creationDate NOT IN ('" + sDate + "')", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE ANY cmis:creationDate NOT IN ('" + sDate + "') order by cmis:creationDate", 0, false, "cmis:objectId",
|
|
new String(), true);
|
|
|
|
// using yesterday
|
|
|
|
date = Duration.subtract(date, new Duration("P1D"));
|
|
Calendar yesterday = Calendar.getInstance();
|
|
yesterday.setTime(date);
|
|
yesterday.set(Calendar.MILLISECOND, today.getMinimum(Calendar.MILLISECOND));
|
|
sDate = df.format(yesterday.getTime());
|
|
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate = '" + sDate + "'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate <> '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate < '" + sDate + "'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate <= '" + sDate + "'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate > '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate >= '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate IN ('" + sDate + "')", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate NOT IN ('" + sDate + "')", doc_count, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate LIKE '" + sDate + "'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate NOT LIKE '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate IS NOT NULL", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate IS NULL", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE '" + sDate + "' = ANY cmis:creationDate", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE '" + sDate + "' <> ANY cmis:creationDate", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE '" + sDate + "' < ANY cmis:creationDate", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE '" + sDate + "' <= ANY cmis:creationDate", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE '" + sDate + "' > ANY cmis:creationDate", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE '" + sDate + "' >= ANY cmis:creationDate", doc_count, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE ANY cmis:creationDate IN ('" + sDate + "')", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE ANY cmis:creationDate NOT IN ('" + sDate + "')", doc_count, false, "cmis:objectId", new String(), true);
|
|
|
|
// using tomorrow
|
|
|
|
date = Duration.add(date, new Duration("P2D"));
|
|
Calendar tomorrow = Calendar.getInstance();
|
|
tomorrow.setTime(date);
|
|
tomorrow.set(Calendar.MILLISECOND, today.getMinimum(Calendar.MILLISECOND));
|
|
sDate = df.format(tomorrow.getTime());
|
|
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate = '" + sDate + "'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate <> '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate < '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate <= '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate > '" + sDate + "'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate >= '" + sDate + "'", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate IN ('" + sDate + "')", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate NOT IN ('" + sDate + "')", doc_count, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate LIKE '" + sDate + "'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate NOT LIKE '" + sDate + "'", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate IS NOT NULL", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE cmis:creationDate IS NULL", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE '" + sDate + "' = ANY cmis:creationDate", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE '" + sDate + "' <> ANY cmis:creationDate", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE '" + sDate + "' < ANY cmis:creationDate", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE '" + sDate + "' <= ANY cmis:creationDate", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE '" + sDate + "' > ANY cmis:creationDate", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE '" + sDate + "' >= ANY cmis:creationDate", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE ANY cmis:creationDate IN ('" + sDate + "')", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:creationDate FROM cmis:document WHERE ANY cmis:creationDate NOT IN ('" + sDate + "')", doc_count, false, "cmis:objectId", new String(), true);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
public void test_CREATED_BY() throws Exception
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM cmis:document", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(doc_count, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:createdBy");
|
|
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertNotNull(value);
|
|
// assertEquals(Boolean.TRUE, value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:createdBy");
|
|
assertNotNull(column);
|
|
assertEquals(PropertyType.STRING, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof DirectProperty);
|
|
}
|
|
rs.close();
|
|
|
|
options = new CMISQueryOptions("SELECT * FROM cmis:document WHERE cmis:createdBy = 'System'", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
rs = cmisQueryService.query(options);
|
|
assertEquals(doc_count, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:createdBy");
|
|
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertNotNull(value);
|
|
assertEquals("System", value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:createdBy");
|
|
assertEquals(PropertyType.STRING, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof DirectProperty);
|
|
}
|
|
rs.close();
|
|
|
|
testQuery("SELECT cmis:createdBy FROM cmis:document WHERE cmis:createdBy = 'System'", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:createdBy FROM cmis:document WHERE cmis:createdBy <> 'System'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:createdBy FROM cmis:document WHERE cmis:createdBy < 'System'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:createdBy FROM cmis:document WHERE cmis:createdBy <= 'System'", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:createdBy FROM cmis:document WHERE cmis:createdBy > 'System'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:createdBy FROM cmis:document WHERE cmis:createdBy >= 'System'", doc_count, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:createdBy FROM cmis:document WHERE cmis:createdBy IN ('System')", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:createdBy FROM cmis:document WHERE cmis:createdBy NOT IN ('System')", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:createdBy FROM cmis:document WHERE cmis:createdBy LIKE 'System'", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:createdBy FROM cmis:document WHERE cmis:createdBy NOT LIKE 'System'", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:createdBy FROM cmis:document WHERE cmis:createdBy IS NOT NULL", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:createdBy FROM cmis:document WHERE cmis:createdBy IS NULL", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:createdBy FROM cmis:document WHERE 'System' = ANY cmis:createdBy", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:createdBy FROM cmis:document WHERE 'System' <> ANY cmis:createdBy", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:createdBy FROM cmis:document WHERE 'System' < ANY cmis:createdBy", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:createdBy FROM cmis:document WHERE 'System' <= ANY cmis:createdBy", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:createdBy FROM cmis:document WHERE 'System' > ANY cmis:createdBy", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:createdBy FROM cmis:document WHERE 'System' >= ANY cmis:createdBy", doc_count, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:createdBy FROM cmis:document WHERE ANY cmis:createdBy IN ('System')", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:createdBy FROM cmis:document WHERE ANY cmis:createdBy NOT IN ('System')", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:createdBy FROM cmis:document WHERE ANY cmis:createdBy IN ('System') order by cmis:createdBy", doc_count, false, "cmis:objectId", new String(), true);
|
|
|
|
}
|
|
|
|
public void test_OBJECT_TYPE_ID() throws Exception
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM cmis:document", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(doc_count, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:objectTypeId");
|
|
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertNotNull(value);
|
|
assertTrue(value.equals("cmis:document") || value.equals("D:cm:dictionaryModel"));
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:objectTypeId");
|
|
assertNotNull(column);
|
|
assertEquals(PropertyType.ID, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof ObjectTypeIdProperty);
|
|
}
|
|
rs.close();
|
|
|
|
options = new CMISQueryOptions("SELECT * FROM cmis:folder", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
rs = cmisQueryService.query(options);
|
|
assertEquals(folder_count, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:objectTypeId");
|
|
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertNotNull(value);
|
|
assertEquals("cmis:folder", value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:objectTypeId");
|
|
assertNotNull(column);
|
|
assertEquals(PropertyType.ID, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof ObjectTypeIdProperty);
|
|
}
|
|
rs.close();
|
|
|
|
// DOC
|
|
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:document WHERE cmis:objectTypeId = 'cmis:document'", doc_count-1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:document WHERE cmis:objectTypeId <> 'cmis:document'", 1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:document WHERE cmis:objectTypeId < 'cmis:document'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:document WHERE cmis:objectTypeId <= 'cmis:document'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:document WHERE cmis:objectTypeId > 'cmis:document'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:document WHERE cmis:objectTypeId >= 'cmis:document'", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:document WHERE cmis:objectTypeId IN ('cmis:document')", doc_count-1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:document WHERE cmis:objectTypeId NOT IN ('cmis:document')", 1, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:document WHERE cmis:objectTypeId LIKE 'cmis:document'", doc_count-1, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:document WHERE cmis:objectTypeId NOT LIKE 'cmis:document'", 1, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:document WHERE cmis:objectTypeId IS NOT NULL", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:document WHERE cmis:objectTypeId IS NULL", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:document WHERE 'cmis:document' = ANY cmis:objectTypeId", doc_count-1, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:document WHERE 'cmis:document' <> ANY cmis:objectTypeId", 1, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:document WHERE 'cmis:document' < ANY cmis:objectTypeId", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:document WHERE 'cmis:document' <= ANY cmis:objectTypeId", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:document WHERE 'cmis:document' > ANY cmis:objectTypeId", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:document WHERE 'cmis:document' >= ANY cmis:objectTypeId", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:document WHERE ANY cmis:objectTypeId IN ('cmis:document')", doc_count-1, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:document WHERE ANY cmis:objectTypeId NOT IN ('cmis:document')", 1, false, "cmis:objectId", new String(), true);
|
|
|
|
// FOLDER
|
|
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE cmis:objectTypeId = 'cmis:folder'", folder_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE cmis:objectTypeId <> 'cmis:folder'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE cmis:objectTypeId < 'cmis:folder'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE cmis:objectTypeId <= 'cmis:folder'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE cmis:objectTypeId > 'cmis:folder'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE cmis:objectTypeId >= 'cmis:folder'", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE cmis:objectTypeId IN ('cmis:folder')", folder_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE cmis:objectTypeId NOT IN ('cmis:folder')", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE cmis:objectTypeId LIKE 'cmis:folder'", folder_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE cmis:objectTypeId NOT LIKE 'cmis:folder'", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE cmis:objectTypeId IS NOT NULL", folder_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE cmis:objectTypeId IS NULL", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE 'cmis:folder' = ANY cmis:objectTypeId", folder_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE 'cmis:folder' <> ANY cmis:objectTypeId", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE 'cmis:folder' < ANY cmis:objectTypeId", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE 'cmis:folder' <= ANY cmis:objectTypeId", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE 'cmis:folder' > ANY cmis:objectTypeId", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE 'cmis:folder' >= ANY cmis:objectTypeId", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE ANY cmis:objectTypeId IN ('cmis:folder')", folder_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE ANY cmis:objectTypeId NOT IN ('cmis:folder')", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
// RELATIONSHIP
|
|
|
|
testQuery("SELECT cmis:objectTypeId FROM Relationship WHERE cmis:objectTypeId = ''", 1, false, "cmis:objectId", new String(), true);
|
|
|
|
}
|
|
|
|
public void test_BASE_TYPE_ID() throws Exception
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM cmis:document", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(doc_count, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:baseTypeId");
|
|
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertNotNull(value);
|
|
assertEquals("cmis:document", value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:baseTypeId");
|
|
assertNotNull(column);
|
|
assertEquals(PropertyType.ID, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof BaseTypeIdProperty);
|
|
}
|
|
rs.close();
|
|
|
|
options = new CMISQueryOptions("SELECT * FROM cmis:folder", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
rs = cmisQueryService.query(options);
|
|
assertEquals(folder_count, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:baseTypeId");
|
|
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertNotNull(value);
|
|
assertEquals("cmis:folder", value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:baseTypeId");
|
|
assertNotNull(column);
|
|
assertEquals(PropertyType.ID, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof BaseTypeIdProperty);
|
|
}
|
|
rs.close();
|
|
|
|
// DOC
|
|
|
|
testQuery("SELECT cmis:baseTypeId FROM cmis:document", doc_count, false, "cmis:baseTypeId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:baseTypeId FROM cmis:document WHERE cmis:baseTypeId = 'cmis:document'", doc_count, false, "cmis:baseTypeId", new String(), false);
|
|
testQuery("SELECT cmis:baseTypeId FROM cmis:document WHERE cmis:baseTypeId <> 'cmis:document'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:baseTypeId FROM cmis:document WHERE cmis:baseTypeId < 'cmis:document'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:baseTypeId FROM cmis:document WHERE cmis:baseTypeId <= 'cmis:document'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:baseTypeId FROM cmis:document WHERE cmis:baseTypeId > 'cmis:document'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:baseTypeId FROM cmis:document WHERE cmis:baseTypeId >= 'cmis:document'", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:baseTypeId FROM cmis:document WHERE cmis:baseTypeId IN ('cmis:document')", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:baseTypeId FROM cmis:document WHERE cmis:baseTypeId NOT IN ('cmis:document')", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:baseTypeId FROM cmis:document WHERE cmis:baseTypeId LIKE 'cmis:document'", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:baseTypeId FROM cmis:document WHERE cmis:baseTypeId NOT LIKE 'cmis:document'", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:baseTypeId FROM cmis:document WHERE cmis:baseTypeId IS NOT NULL", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:baseTypeId FROM cmis:document WHERE cmis:baseTypeId IS NULL", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:baseTypeId FROM cmis:document WHERE 'cmis:document' = ANY cmis:baseTypeId", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:baseTypeId FROM cmis:document WHERE 'cmis:document' <> ANY cmis:baseTypeId", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:baseTypeId FROM cmis:document WHERE 'cmis:document' < ANY cmis:baseTypeId", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:baseTypeId FROM cmis:document WHERE 'cmis:document' <= ANY cmis:baseTypeId", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:baseTypeId FROM cmis:document WHERE 'cmis:document' > ANY cmis:baseTypeId", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:baseTypeId FROM cmis:document WHERE 'cmis:document' >= ANY cmis:baseTypeId", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:baseTypeId FROM cmis:document WHERE ANY cmis:baseTypeId IN ('cmis:document')", doc_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:baseTypeId FROM cmis:document WHERE ANY cmis:baseTypeId NOT IN ('cmis:document')", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
|
|
|
|
|
|
testQuery("SELECT cmis:baseTypeId FROM cmis:folder", folder_count, false, "cmis:baseTypeId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:baseTypeId FROM cmis:folder WHERE cmis:baseTypeId = 'cmis:folder'", folder_count, false, "cmis:baseTypeId", new String(), false);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE cmis:objectTypeId <> 'cmis:folder'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE cmis:objectTypeId < 'cmis:folder'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE cmis:objectTypeId <= 'cmis:folder'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE cmis:objectTypeId > 'cmis:folder'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE cmis:objectTypeId >= 'cmis:folder'", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE cmis:objectTypeId IN ('cmis:folder')", folder_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE cmis:objectTypeId NOT IN ('cmis:folder')", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE cmis:objectTypeId LIKE 'cmis:folder'", folder_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE cmis:objectTypeId NOT LIKE 'cmis:folder'", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE cmis:objectTypeId IS NOT NULL", folder_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE cmis:objectTypeId IS NULL", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE 'cmis:folder' = ANY cmis:objectTypeId", folder_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE 'cmis:folder' <> ANY cmis:objectTypeId", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE 'cmis:folder' < ANY cmis:objectTypeId", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE 'cmis:folder' <= ANY cmis:objectTypeId", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE 'cmis:folder' > ANY cmis:objectTypeId", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE 'cmis:folder' >= ANY cmis:objectTypeId", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE ANY cmis:objectTypeId IN ('cmis:folder')", folder_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectTypeId FROM cmis:folder WHERE ANY cmis:objectTypeId NOT IN ('cmis:folder')", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
// RELATIONSHIP
|
|
|
|
testQuery("SELECT cmis:baseTypeId FROM cmis:relationship WHERE cmis:baseTypeId = 'cmis:relationship'", 1, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:baseTypeId FROM cmis:policy WHERE cmis:baseTypeId = 'cmis:relationship'", 1, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:baseTypeId FROM cmis:folder WHERE cmis:baseTypeId = 'cmis:policy'", 0, false, "cmis:baseTypeId", new String(), false);
|
|
testQuery("SELECT cmis:baseTypeId FROM cmis:folder WHERE cmis:baseTypeId = 'cmis:relationship'", 0, false, "cmis:baseTypeId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:baseTypeId FROM cmis:folder WHERE cmis:baseTypeId = 'cmis:document'", 0, false, "cmis:baseTypeId", new String(), false);
|
|
testQuery("SELECT cmis:baseTypeId FROM cmis:document WHERE cmis:baseTypeId = 'cmis:folder'", 0, false, "cmis:baseTypeId", new String(), false);
|
|
|
|
}
|
|
|
|
public void test_ObjectId() throws Exception
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM cmis:document", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(doc_count, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:objectId");
|
|
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertNotNull(value);
|
|
// assertEquals(Boolean.TRUE, value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:objectId");
|
|
assertNotNull(column);
|
|
assertEquals(PropertyType.ID, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof ObjectIdProperty);
|
|
}
|
|
rs.close();
|
|
|
|
options = new CMISQueryOptions("SELECT * FROM cmis:folder", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
rs = cmisQueryService.query(options);
|
|
assertEquals(folder_count, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:objectId");
|
|
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertNotNull(value);
|
|
// assertEquals(Boolean.TRUE, value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:objectId");
|
|
assertNotNull(column);
|
|
assertEquals(PropertyType.ID, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof ObjectIdProperty);
|
|
}
|
|
rs.close();
|
|
|
|
String companyHomeId = testQuery("SELECT cmis:objectId FROM cmis:folder WHERE cmis:name = 'Folder 0'", 1, false, "cmis:objectId", new String(), false);
|
|
|
|
options = new CMISQueryOptions("SELECT * FROM cmis:folder WHERE cmis:objectId = '" + companyHomeId + "'", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
rs = cmisQueryService.query(options);
|
|
assertEquals(1, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:objectId");
|
|
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertNotNull(value);
|
|
assertEquals(companyHomeId, value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:objectId");
|
|
assertEquals(PropertyType.ID, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof ObjectIdProperty);
|
|
}
|
|
rs.close();
|
|
|
|
String id = cmisConnector.createNodeInfo(f0).getObjectId();
|
|
|
|
assertEquals(companyHomeId, id);
|
|
|
|
testQuery("SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId = '" + companyHomeId + "'", 1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId <> '" + companyHomeId + "'", folder_count-1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId < '" + companyHomeId + "'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId <= '" + companyHomeId + "'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId > '" + companyHomeId + "'", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId >= '" + companyHomeId + "'", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId IN ('" + companyHomeId + "')", 1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId NOT IN ('" + companyHomeId + "')", folder_count-1, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId LIKE '" + companyHomeId + "'", 1, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId NOT LIKE '" + companyHomeId + "'", folder_count-1, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:objectId FROM cmis:folder WHERE IN_FOLDER('" + companyHomeId + "')", 2, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectId FROM cmis:folder WHERE IN_TREE ('" + companyHomeId + "')", 6, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId IS NOT NULL", folder_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId IS NULL", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:objectId FROM cmis:folder WHERE '" + companyHomeId + "' = ANY cmis:objectId", 1, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectId FROM cmis:folder WHERE '" + companyHomeId + "' <> ANY cmis:objectId", folder_count-1, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectId FROM cmis:folder WHERE '" + companyHomeId + "' < ANY cmis:objectId", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectId FROM cmis:folder WHERE '" + companyHomeId + "' <= ANY cmis:objectId", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectId FROM cmis:folder WHERE '" + companyHomeId + "' > ANY cmis:objectId", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectId FROM cmis:folder WHERE '" + companyHomeId + "' >= ANY cmis:objectId", 0, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT cmis:objectId FROM cmis:folder WHERE ANY cmis:objectId IN ('" + companyHomeId + "')", 1, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT cmis:objectId FROM cmis:folder WHERE ANY cmis:objectId NOT IN ('" + companyHomeId + "')", folder_count-1, false, "cmis:objectId", new String(), true);
|
|
|
|
// Folder versions which are ignored ....
|
|
|
|
testQuery("SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId = '" + companyHomeId + ";1.0'", 1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId <> '" + companyHomeId + ";1.0'", folder_count-1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId IN ('" + companyHomeId + ";1.0')", 1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId NOT IN ('" + companyHomeId + ";1.0')", folder_count-1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId IS NOT NULL", folder_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId IS NULL", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
// Docs
|
|
|
|
|
|
//String docId = testQuery("SELECT cmis:objectId FROM cmis:document WHERE cmis:name = 'Alfresco Tutorial'", 1, false, "cmis:objectId", new String(), false);
|
|
|
|
String docId = c0.toString();
|
|
|
|
testQuery("SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId = '" + docId + "'", 1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId <> '" + docId + "'", doc_count-1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId IN ('" + docId + "')", 1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId NOT IN ('" + docId + "')", doc_count-1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId IS NOT NULL", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId IS NULL", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
testQuery("SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId = '" + docId + ";1.0'", 1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId <> '" + docId + ";1.0'", doc_count-1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId IN ('" + docId + ";1.0')", 1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId NOT IN ('" + docId + ";1.0')", doc_count-1, false, "cmis:objectId", new String(), false);
|
|
|
|
nodeService.setProperty(c0, ContentModel.PROP_VERSION_LABEL, "1.0");
|
|
|
|
//docId = testQuery("SELECT cmis:objectId FROM cmis:document WHERE cmis:name = 'Alfresco Tutorial'", 1, false, "cmis:objectId", new String(), false);
|
|
docId = c0.toString()+";1.0";
|
|
|
|
testQuery("SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId = '" + docId + "'", 1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId <> '" + docId + "'", doc_count-1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId IN ('" + docId + "')", 1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId NOT IN ('" + docId + "')", doc_count-1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId IS NOT NULL", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId IS NULL", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
nodeService.setProperty(c0, ContentModel.PROP_VERSION_LABEL, "2.1");
|
|
|
|
//docId = testQuery("SELECT cmis:objectId FROM cmis:document WHERE cmis:name = 'Alfresco Tutorial'", 1, false, "cmis:objectId", new String(), false);
|
|
// comes back as 1.0 ??
|
|
|
|
docId = c0.toString()+";2.1";
|
|
|
|
testQuery("SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId = '" + docId + "'", 1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId <> '" + docId + "'", doc_count-1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId IN ('" + docId + "')", 1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId NOT IN ('" + docId + "')", doc_count-1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId IS NOT NULL", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId IS NULL", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
|
|
}
|
|
|
|
public void testOrderBy() throws Exception
|
|
{
|
|
testOrderBy("SELECT cmis:objectId FROM cmis:folder ORDER BY cmis:objectId", folder_count, false, Order.ASCENDING, CMISQueryMode.CMS_STRICT, "cmis:objectId");
|
|
testOrderBy("SELECT cmis:objectId FROM cmis:folder ORDER BY cmis:objectTypeId", folder_count, true, Order.ASCENDING, CMISQueryMode.CMS_STRICT, "cmis:objectTypeId");
|
|
// testOrderBy("SELECT cmis:objectId FROM cmis:folder ORDER BY cmis:objectTypeId", folder_count, false,
|
|
// Order.ASCENDING, CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS,
|
|
// "cmis:objectTypeId");
|
|
testOrderBy("SELECT cmis:objectId FROM cmis:folder ORDER BY cmis:objectId ASC", folder_count, false, Order.ASCENDING, CMISQueryMode.CMS_STRICT, "cmis:objectId");
|
|
testOrderBy("SELECT cmis:objectId FROM cmis:folder ORDER BY cmis:objectId DESC", folder_count, false, Order.DESCENDING, CMISQueryMode.CMS_STRICT, "cmis:objectId");
|
|
testOrderBy("SELECT cmis:objectId FROM cmis:folder ORDER BY cmis:objectId DESC", folder_count, true, Order.ASCENDING, CMISQueryMode.CMS_STRICT, "cmis:objectId");
|
|
|
|
testOrderBy("SELECT cmis:objectId Meep FROM cmis:folder ORDER BY Meep", folder_count, false, Order.ASCENDING, CMISQueryMode.CMS_STRICT, "Meep");
|
|
testOrderBy("SELECT cmis:objectId Meep FROM cmis:folder ORDER BY cmis:objectId", folder_count, false, Order.ASCENDING, CMISQueryMode.CMS_STRICT, "Meep");
|
|
testOrderBy("SELECT cmis:objectId Meep FROM cmis:folder ORDER BY Meep ASC", folder_count, false, Order.ASCENDING, CMISQueryMode.CMS_STRICT, "Meep");
|
|
testOrderBy("SELECT cmis:objectId Meep FROM cmis:folder ORDER BY Meep DESC", folder_count, false, Order.DESCENDING, CMISQueryMode.CMS_STRICT, "Meep");
|
|
|
|
testOrderBy("SELECT cmis:objectId FROM cmis:folder F ORDER BY F.cmis:objectId", folder_count, false, Order.ASCENDING, CMISQueryMode.CMS_STRICT, "cmis:objectId");
|
|
testOrderBy("SELECT cmis:objectId FROM cmis:folder F ORDER BY cmis:objectId", folder_count, false, Order.ASCENDING, CMISQueryMode.CMS_STRICT, "cmis:objectId");
|
|
testOrderBy("SELECT cmis:objectId FROM cmis:folder F ORDER BY F.cmis:objectId ASC", folder_count, false, Order.ASCENDING, CMISQueryMode.CMS_STRICT, "F.cmis:objectId");
|
|
testOrderBy("SELECT cmis:objectId FROM cmis:folder F ORDER BY F.cmis:objectId DESC", folder_count, false, Order.DESCENDING, CMISQueryMode.CMS_STRICT, "F.cmis:objectId");
|
|
|
|
testOrderBy("SELECT F.cmis:objectId Meep FROM cmis:folder F ORDER BY Meep", folder_count, false, Order.ASCENDING, CMISQueryMode.CMS_STRICT, "Meep");
|
|
testOrderBy("SELECT F.cmis:objectId Meep FROM cmis:folder F ORDER BY F.cmis:objectId", folder_count, false, Order.ASCENDING, CMISQueryMode.CMS_STRICT, "F.cmis:objectId");
|
|
testOrderBy("SELECT F.cmis:objectId Meep FROM cmis:folder F ORDER BY cmis:objectId", folder_count, false, Order.ASCENDING, CMISQueryMode.CMS_STRICT, "F.cmis:objectId");
|
|
testOrderBy("SELECT F.cmis:objectId Meep FROM cmis:folder F ORDER BY Meep ASC", folder_count, false, Order.ASCENDING, CMISQueryMode.CMS_STRICT, "cmis:objectId");
|
|
testOrderBy("SELECT F.cmis:objectId Meep FROM cmis:folder F ORDER BY Meep DESC", folder_count, false, Order.DESCENDING, CMISQueryMode.CMS_STRICT, "Meep");
|
|
|
|
testOrderBy("SELECT SCORE() AS MEEP, cmis:objectId FROM cmis:document where CONTAINS('*') ORDER BY MEEP", doc_count, false, Order.ASCENDING, CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS,
|
|
"MEEP");
|
|
testOrderBy("SELECT SCORE(), cmis:objectId FROM cmis:document where CONTAINS('*') ORDER BY SEARCH_SCORE", doc_count, false, Order.ASCENDING, CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS,
|
|
"SEARCH_SCORE");
|
|
testOrderBy("SELECT SCORE() AS MEEP, cmis:objectId FROM cmis:document where CONTAINS('*') ORDER BY MEEP ASC", doc_count, false, Order.ASCENDING, CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS,
|
|
"MEEP");
|
|
testOrderBy("SELECT SCORE() AS MEEP, cmis:objectId FROM cmis:document where CONTAINS('*') ORDER BY MEEP DESC", doc_count, false, Order.DESCENDING,
|
|
CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS, "MEEP");
|
|
|
|
testOrderBy("SELECT SCORE() AS MEEP, cmis:objectId FROM cmis:folder where CONTAINS('cmis:name:*') ORDER BY MEEP", folder_count, false, Order.ASCENDING,
|
|
CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS, "MEEP");
|
|
testOrderBy("SELECT SCORE() AS MEEP, cmis:objectId FROM cmis:folder where CONTAINS('cmis:name:*') ORDER BY MEEP ASC", folder_count, false, Order.ASCENDING,
|
|
CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS, "MEEP");
|
|
testOrderBy("SELECT SCORE() AS MEEP, cmis:objectId FROM cmis:folder where CONTAINS('cmis:name:*') ORDER BY MEEP DESC", folder_count, false, Order.DESCENDING,
|
|
CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS, "MEEP");
|
|
|
|
// other orderable properties
|
|
|
|
testOrderBy("SELECT cmis:objectTypeId FROM cmis:folder ORDER BY cmis:objectTypeId ASC", folder_count, false, Order.ASCENDING, CMISQueryMode.CMS_STRICT, "cmis:objectTypeId");
|
|
testOrderBy("SELECT cmis:objectTypeId FROM cmis:folder ORDER BY cmis:objectTypeId DESC", folder_count, false, Order.DESCENDING, CMISQueryMode.CMS_STRICT,
|
|
"cmis:objectTypeId");
|
|
// all are equal ...
|
|
testOrderBy("SELECT cmis:objectTypeId FROM cmis:folder ORDER BY cmis:objectTypeId ASC", folder_count, false, Order.DESCENDING, CMISQueryMode.CMS_STRICT,
|
|
"cmis:objectTypeId");
|
|
|
|
testOrderBy("SELECT cmis:createdBy FROM cmis:folder ORDER BY cmis:createdBy ASC", folder_count, false, Order.ASCENDING, CMISQueryMode.CMS_STRICT, "cmis:createdBy");
|
|
testOrderBy("SELECT cmis:createdBy FROM cmis:folder ORDER BY cmis:createdBy DESC", folder_count, false, Order.DESCENDING, CMISQueryMode.CMS_STRICT, "cmis:createdBy");
|
|
// all are equal
|
|
testOrderBy("SELECT cmis:createdBy FROM cmis:folder ORDER BY cmis:createdBy ASC", folder_count, false, Order.DESCENDING, CMISQueryMode.CMS_STRICT, "cmis:createdBy");
|
|
|
|
testOrderBy("SELECT cmis:creationDate FROM cmis:folder ORDER BY cmis:creationDate ASC", folder_count, false, Order.ASCENDING, CMISQueryMode.CMS_STRICT, "cmis:creationDate");
|
|
testOrderBy("SELECT cmis:creationDate FROM cmis:folder ORDER BY cmis:creationDate DESC", folder_count, false, Order.DESCENDING, CMISQueryMode.CMS_STRICT,
|
|
"cmis:creationDate");
|
|
testOrderBy("SELECT cmis:creationDate FROM cmis:folder ORDER BY cmis:creationDate DESC", folder_count, true, Order.ASCENDING, CMISQueryMode.CMS_STRICT, "cmis:creationDate");
|
|
|
|
testOrderBy("SELECT cmis:lastModifiedBy FROM cmis:folder ORDER BY cmis:lastModifiedBy ASC", folder_count, false, Order.ASCENDING, CMISQueryMode.CMS_STRICT,
|
|
"cmis:lastModifiedBy");
|
|
testOrderBy("SELECT cmis:lastModifiedBy FROM cmis:folder ORDER BY cmis:lastModifiedBy DESC", folder_count, false, Order.DESCENDING, CMISQueryMode.CMS_STRICT,
|
|
"cmis:lastModifiedBy");
|
|
// all equals ..
|
|
testOrderBy("SELECT cmis:lastModifiedBy FROM cmis:folder ORDER BY cmis:lastModifiedBy DESC", folder_count, false, Order.ASCENDING, CMISQueryMode.CMS_STRICT,
|
|
"cmis:lastModifiedBy");
|
|
|
|
testOrderBy("SELECT cmis:lastModificationDate FROM cmis:folder ORDER BY cmis:lastModificationDate ASC", folder_count, false, Order.ASCENDING, CMISQueryMode.CMS_STRICT,
|
|
"cmis:lastModificationDate");
|
|
testOrderBy("SELECT cmis:lastModificationDate FROM cmis:folder ORDER BY cmis:lastModificationDate DESC", folder_count, false, Order.DESCENDING, CMISQueryMode.CMS_STRICT,
|
|
"cmis:lastModificationDate");
|
|
testOrderBy("SELECT cmis:lastModificationDate FROM cmis:folder ORDER BY cmis:lastModificationDate DESC", folder_count, true, Order.ASCENDING, CMISQueryMode.CMS_STRICT,
|
|
"cmis:lastModificationDate");
|
|
|
|
testOrderBy("SELECT cmis:name FROM cmis:folder ORDER BY cmis:name ASC", folder_count, false, Order.ASCENDING, CMISQueryMode.CMS_STRICT, "cmis:name");
|
|
testOrderBy("SELECT cmis:name FROM cmis:folder ORDER BY cmis:name DESC", folder_count, false, Order.DESCENDING, CMISQueryMode.CMS_STRICT, "cmis:name");
|
|
testOrderBy("SELECT cmis:name FROM cmis:folder ORDER BY cmis:name DESC", folder_count, true, Order.ASCENDING, CMISQueryMode.CMS_STRICT, "cmis:name");
|
|
|
|
testOrderBy("SELECT cmis:name FROM cmis:document ORDER BY cmis:name ASC", doc_count, false, Order.ASCENDING, CMISQueryMode.CMS_STRICT, "cmis:name");
|
|
testOrderBy("SELECT cmis:name FROM cmis:document ORDER BY cmis:name DESC", doc_count, false, Order.DESCENDING, CMISQueryMode.CMS_STRICT, "cmis:name");
|
|
testOrderBy("SELECT cmis:name FROM cmis:document ORDER BY cmis:name DESC", doc_count, true, Order.ASCENDING, CMISQueryMode.CMS_STRICT, "cmis:name");
|
|
|
|
// version label is not orderable as indexed and tokenised
|
|
testOrderBy("SELECT cmis:versionLabel FROM cmis:document ORDER BY cmis:versionLabel ASC", doc_count, true, Order.ASCENDING, CMISQueryMode.CMS_STRICT, "cmis:versionLabel");
|
|
testOrderBy("SELECT cmis:versionLabel FROM cmis:document ORDER BY cmis:versionLabel DESC", doc_count, true, Order.DESCENDING, CMISQueryMode.CMS_STRICT,
|
|
"cmis:versionLabel");
|
|
testOrderBy("SELECT cmis:versionLabel FROM cmis:document ORDER BY cmis:versionLabel DESC", doc_count, true, Order.ASCENDING, CMISQueryMode.CMS_STRICT, "cmis:versionLabel");
|
|
|
|
// cmis:contentStreamFileName is not orderable as indexed and tokenised
|
|
testOrderBy("SELECT cmis:contentStreamFileName FROM cmis:document ORDER BY cmis:contentStreamFileName ASC", doc_count, true, Order.ASCENDING, CMISQueryMode.CMS_STRICT,
|
|
"cmis:contentStreamFileName");
|
|
testOrderBy("SELECT cmis:contentStreamFileName FROM cmis:document ORDER BY cmis:contentStreamFileName DESC", doc_count, true, Order.DESCENDING, CMISQueryMode.CMS_STRICT,
|
|
"cmis:contentStreamFileName");
|
|
testOrderBy("SELECT cmis:contentStreamFileName FROM cmis:document ORDER BY cmis:contentStreamFileName DESC", doc_count, true, Order.ASCENDING, CMISQueryMode.CMS_STRICT,
|
|
"cmis:contentStreamFileName");
|
|
|
|
// TODO: Ordered by PARENT in teh index which differs from CMIS parent - which is null if not the correct assoc or parent type ....
|
|
//testOrderBy("SELECT cmis:parentId FROM cmis:folder ORDER BY cmis:parentId ASC", folder_count, false, Order.ASCENDING, CMISQueryMode.CMS_STRICT, "cmis:parentId");
|
|
//testOrderBy("SELECT cmis:parentId FROM cmis:folder ORDER BY cmis:parentId DESC", folder_count, false, Order.DESCENDING, CMISQueryMode.CMS_STRICT, "cmis:parentId");
|
|
//testOrderBy("SELECT cmis:parentId FROM cmis:folder ORDER BY cmis:parentId DESC", folder_count, true, Order.ASCENDING, CMISQueryMode.CMS_STRICT, "cmis:parentId");
|
|
|
|
testQuery("SELECT SCORE() AS MEEP, cmis:objectId FROM cmis:folder WHERE CONTAINS('cmis:name:*') AND cmis:name = 'compan home' ORDER BY SCORE() DESC", 1, false,
|
|
"cmis:objectId", new String(), true);
|
|
testQuery("SELECT SCORE() AS MEEP, cmis:objectId FROM cmis:folder WHERE CONTAINS('cmis:name:*') AND cmis:name IN ('company', 'home') ORDER BY MEEEP DESC", 1, false,
|
|
"cmis:objectId", new String(), true);
|
|
testQuery("SELECT SCORE() AS MEEP, cmis:objectId FROM cmis:folder WHERE CONTAINS('cmis:name:*') AND cmis:name IN ('company', 'home') ORDER BY cmis:parentId DESC", 1,
|
|
false, "cmis:objectId", new String(), true);
|
|
testExtendedQuery("SELECT SCORE() AS MEEP, cmis:objectId, cmis:parentId FROM cmis:folder WHERE CONTAINS('cmis:name:*') ORDER BY cmis:parentId DESC", folder_count, false,
|
|
"cmis:objectId", new String(), false);
|
|
testQuery("SELECT SCORE() AS MEEP, cmis:objectId FROM cmis:folder WHERE CONTAINS('cmis:name:*') AND cmis:name IN ('company', 'home') ORDER BY cmis:notThere DESC", 1,
|
|
false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT SCORE() AS MEEP, cmis:objectId FROM cmis:folder as F WHERE CONTAINS('cmis:name:*') AND cmis:name IN ('company', 'home') ORDER BY F.cmis:parentId DESC",
|
|
1, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT SCORE() AS MEEP, cmis:objectId FROM cmis:folder F WHERE CONTAINS('cmis:name:*') AND cmis:name IN ('company', 'home') ORDER BY F.cmis:notThere DESC", 1,
|
|
false, "cmis:objectId", new String(), true);
|
|
|
|
}
|
|
|
|
private <T> void testOrderBy(String query, int size, boolean shouldThrow, Order order, CMISQueryMode mode, String... orderByPropertyName)
|
|
{
|
|
CMISResultSet rs = null;
|
|
try
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions(query, rootNodeRef.getStoreRef());
|
|
options.setQueryMode(mode);
|
|
rs = cmisQueryService.query(options);
|
|
Comparable<?>[] previous = null;
|
|
boolean[] wasNull = null;
|
|
boolean[] hasValue = null;
|
|
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
if (previous == null)
|
|
{
|
|
previous = new Comparable[orderByPropertyName.length];
|
|
wasNull = new boolean[orderByPropertyName.length];
|
|
hasValue = new boolean[orderByPropertyName.length];
|
|
for (int i = 0; i < orderByPropertyName.length; i++)
|
|
{
|
|
Serializable sValue = row.getValue(orderByPropertyName[i]);
|
|
if (sValue instanceof Comparable<?>)
|
|
{
|
|
Comparable<?> comparable = (Comparable<?>) sValue;
|
|
previous[i] = comparable;
|
|
hasValue[i] = true;
|
|
}
|
|
else
|
|
{
|
|
previous[i] = null;
|
|
wasNull[i] = true;
|
|
}
|
|
|
|
}
|
|
}
|
|
// if (row.getIndex() == 0)
|
|
// {
|
|
// Serializable sValue = row.getValue(returnPropertyName);
|
|
// returnValue = (T) DefaultTypeConverter.INSTANCE.convert(returnType.getClass(), sValue);
|
|
//
|
|
// }
|
|
else
|
|
{
|
|
for (int i = 0; i < orderByPropertyName.length; i++)
|
|
{
|
|
Serializable current = row.getValue(orderByPropertyName[i]);
|
|
Comparable<?> last = previous[i];
|
|
|
|
if (last != null)
|
|
{
|
|
if (current == null)
|
|
{
|
|
switch (order)
|
|
{
|
|
case ASCENDING:
|
|
if (shouldThrow)
|
|
{
|
|
throw new IllegalStateException("Incorrect Order");
|
|
}
|
|
else
|
|
{
|
|
fail("Null found after value ascending");
|
|
}
|
|
case DESCENDING:
|
|
// OK
|
|
break;
|
|
default:
|
|
throw new UnsupportedOperationException();
|
|
}
|
|
}
|
|
|
|
int comparison = 0;
|
|
if(last instanceof String )
|
|
{
|
|
Collator myCollator = Collator.getInstance();
|
|
if(last == null)
|
|
{
|
|
if(current == null)
|
|
{
|
|
comparison = 0;
|
|
}
|
|
else
|
|
{
|
|
comparison = -1;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if(current == null)
|
|
{
|
|
comparison = 1;
|
|
}
|
|
else
|
|
{
|
|
comparison = myCollator.compare(last, current);
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
Method ct = null;
|
|
Method[] methods = last.getClass().getMethods();
|
|
for (int m = 0; m < methods.length; m++)
|
|
{
|
|
if (methods[m].getName().equals("compareTo")
|
|
&& (methods[m].getParameterTypes().length == 1) && (methods[m].getParameterTypes()[0].equals(methods[m].getDeclaringClass())))
|
|
{
|
|
if (ct != null)
|
|
{
|
|
throw new IllegalStateException("Found 2 or more compareTo methods");
|
|
}
|
|
ct = methods[m];
|
|
}
|
|
}
|
|
comparison = (Integer) ct.invoke(last, current);
|
|
}
|
|
|
|
|
|
switch (order)
|
|
{
|
|
case ASCENDING:
|
|
if (comparison <= 0)
|
|
{ // as expected
|
|
break;
|
|
}
|
|
else
|
|
{
|
|
if (shouldThrow)
|
|
{
|
|
throw new IllegalStateException("Incorrect Order");
|
|
}
|
|
else
|
|
{
|
|
fail("Incorrect Order");
|
|
}
|
|
}
|
|
case DESCENDING:
|
|
if (comparison >= 0)
|
|
{ // as expected
|
|
break;
|
|
}
|
|
else
|
|
{
|
|
if (shouldThrow)
|
|
{
|
|
throw new IllegalStateException("Incorrect Order");
|
|
}
|
|
else
|
|
{
|
|
fail("Incorrect Order");
|
|
}
|
|
}
|
|
default:
|
|
throw new UnsupportedOperationException("Column data type is not comparable " + orderByPropertyName[i]);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (current != null)
|
|
{
|
|
switch (order)
|
|
{
|
|
case ASCENDING:
|
|
// OK
|
|
break;
|
|
case DESCENDING:
|
|
if (shouldThrow)
|
|
{
|
|
throw new IllegalStateException("Incorrect Order");
|
|
}
|
|
else
|
|
{
|
|
fail("Null found descending");
|
|
}
|
|
default:
|
|
throw new UnsupportedOperationException();
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
for (int i = 0; i < orderByPropertyName.length; i++)
|
|
{
|
|
Serializable sValue = row.getValue(orderByPropertyName[i]);
|
|
if (sValue instanceof Comparable<?>)
|
|
{
|
|
Comparable<?> comparable = (Comparable<?>) sValue;
|
|
previous[i] = comparable;
|
|
hasValue[i] = true;
|
|
}
|
|
else
|
|
{
|
|
previous[i] = null;
|
|
wasNull[i] = true;
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
for (int i = 0; i < hasValue.length; i++)
|
|
{
|
|
if (!hasValue[i])
|
|
{
|
|
throw new UnsupportedOperationException("Only nulls found for " + orderByPropertyName[i]);
|
|
}
|
|
}
|
|
if (size >= 0)
|
|
{
|
|
assertEquals(size, rs.getLength());
|
|
}
|
|
if (shouldThrow)
|
|
{
|
|
fail("Should have thrown an exception");
|
|
}
|
|
|
|
}
|
|
catch (CmisBaseException e)
|
|
{
|
|
if (shouldThrow)
|
|
{
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
throw e;
|
|
}
|
|
}
|
|
catch (QueryModelException e)
|
|
{
|
|
if (shouldThrow)
|
|
{
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
throw e;
|
|
}
|
|
}
|
|
catch (FTSQueryException e)
|
|
{
|
|
if (shouldThrow)
|
|
{
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
throw e;
|
|
}
|
|
}
|
|
catch (UnsupportedOperationException e)
|
|
{
|
|
if (shouldThrow)
|
|
{
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
throw e;
|
|
}
|
|
}
|
|
catch (IllegalArgumentException e)
|
|
{
|
|
// TODO Auto-generated catch block
|
|
e.printStackTrace();
|
|
}
|
|
catch (IllegalAccessException e)
|
|
{
|
|
// TODO Auto-generated catch block
|
|
e.printStackTrace();
|
|
}
|
|
catch (InvocationTargetException e)
|
|
{
|
|
// TODO Auto-generated catch block
|
|
e.printStackTrace();
|
|
}
|
|
catch (IllegalStateException e)
|
|
{
|
|
if (shouldThrow)
|
|
{
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
throw e;
|
|
}
|
|
}
|
|
finally
|
|
{
|
|
if (rs != null)
|
|
{
|
|
try
|
|
{
|
|
rs.close();
|
|
}
|
|
finally
|
|
{
|
|
rs = null;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
public void testUpperAndLower() throws Exception
|
|
{
|
|
testExtendedQuery("SELECT * FROM cmis:folder WHERE cmis:name = 'Folder 1'", 1, false, "cmis:objectId", new String(), false);
|
|
testExtendedQuery("SELECT * FROM cmis:folder WHERE cmis:name = 'FOLDER 1'", 0, false, "cmis:objectId", new String(), false);
|
|
testExtendedQuery("SELECT * FROM cmis:folder WHERE cmis:name = 'folder 1'", 0, false, "cmis:objectId", new String(), false);
|
|
testExtendedQuery("SELECT * FROM cmis:folder WHERE Upper(cmis:name) = 'FOLDER 1'", 1, false, "cmis:objectId", new String(), false);
|
|
testExtendedQuery("SELECT * FROM cmis:folder WHERE Lower(cmis:name) = 'folder 1'", 1, false, "cmis:objectId", new String(), false);
|
|
testExtendedQuery("SELECT * FROM cmis:folder WHERE Upper(cmis:name) = 'folder 1'", 0, false, "cmis:objectId", new String(), false);
|
|
testExtendedQuery("SELECT * FROM cmis:folder WHERE Lower(cmis:name) = 'FOLDER 1'", 0, false, "cmis:objectId", new String(), false);
|
|
testExtendedQuery("SELECT * FROM cmis:folder WHERE Upper(cmis:name) = 'Folder 1'", 0, false, "cmis:objectId", new String(), false);
|
|
testExtendedQuery("SELECT * FROM cmis:folder WHERE Lower(cmis:name) = 'Folder 1'", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
testExtendedQuery("SELECT * FROM cmis:folder WHERE Upper(cmis:name) <> 'FOLDER 1'", folder_count-1, false, "cmis:objectId", new String(), false);
|
|
|
|
testExtendedQuery("SELECT * FROM cmis:folder WHERE Upper(cmis:name) <= 'FOLDER 1'", 3, false, "cmis:objectId", new String(), false);
|
|
testExtendedQuery("SELECT * FROM cmis:folder WHERE Upper(cmis:name) < 'FOLDER 1'", 2, false, "cmis:objectId", new String(), false);
|
|
testExtendedQuery("SELECT * FROM cmis:folder WHERE Upper(cmis:name) >= 'FOLDER 1'", folder_count-2, false, "cmis:objectId", new String(), false);
|
|
testExtendedQuery("SELECT * FROM cmis:folder WHERE Upper(cmis:name) > 'FOLDER 1'", folder_count-3, false, "cmis:objectId", new String(), false);
|
|
}
|
|
|
|
public void testAllSimpleTextPredicates() throws Exception
|
|
{
|
|
testQuery("SELECT * FROM cmis:folder WHERE cmis:name IS NOT NULL AND cmis:name = 'Folder 1'", 1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT * FROM cmis:folder WHERE cmis:name IS NOT NULL AND cmis:name = 'Folder 9'", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT * FROM cmis:folder WHERE cmis:name IS NOT NULL AND cmis:name = 'Folder 9\\''", 1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT * FROM cmis:folder WHERE cmis:name IS NOT NULL AND NOT cmis:name = 'Folder 1'", folder_count-1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT * FROM cmis:folder WHERE cmis:name IS NOT NULL AND 'Folder 1' = ANY cmis:name", 1, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT * FROM cmis:folder WHERE cmis:name IS NOT NULL AND NOT cmis:name <> 'Folder 1'", 1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT * FROM cmis:folder WHERE cmis:name IS NOT NULL AND cmis:name <> 'Folder 1'", folder_count-1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT * FROM cmis:folder WHERE cmis:name IS NOT NULL AND cmis:name < 'Folder 1'", 2, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT * FROM cmis:folder WHERE cmis:name IS NOT NULL AND cmis:name <= 'Folder 1'", 3, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT * FROM cmis:folder WHERE cmis:name IS NOT NULL AND cmis:name > 'Folder 1'", folder_count-3, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT * FROM cmis:folder WHERE cmis:name IS NOT NULL AND cmis:name >= 'Folder 1'", folder_count-2, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT * FROM cmis:folder WHERE cmis:name IS NOT NULL AND cmis:name IN ('Folder 1', '1')", 1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT * FROM cmis:folder WHERE cmis:name IS NOT NULL AND cmis:name NOT IN ('Folder 1', 'Folder 9\\'')", folder_count-2, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT * FROM cmis:folder WHERE cmis:name IS NOT NULL AND ANY cmis:name IN ('Folder 1', 'Folder 9\\'')", 2, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT * FROM cmis:folder WHERE cmis:name IS NOT NULL AND ANY cmis:name NOT IN ('2', '3')", folder_count, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT * FROM cmis:folder WHERE cmis:name IS NOT NULL AND cmis:name LIKE 'Folder 1'", 1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT * FROM cmis:folder WHERE cmis:name IS NOT NULL AND cmis:name LIKE 'Fol%'", folder_count-1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT * FROM cmis:folder WHERE cmis:name IS NOT NULL AND cmis:name LIKE 'F_l_e_ 1'", 1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT * FROM cmis:folder WHERE cmis:name IS NOT NULL AND cmis:name NOT LIKE 'F_l_e_ 1'", folder_count-1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT * FROM cmis:folder WHERE cmis:name IS NOT NULL AND cmis:name LIKE 'F_l_e_ %'", folder_count-1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT * FROM cmis:folder WHERE cmis:name IS NOT NULL AND cmis:name NOT LIKE 'F_l_e_ %'", 1, false, "cmis:objectId", new String(), false);
|
|
// TODO: Fix below which fail??
|
|
testQuery("SELECT * FROM cmis:folder WHERE cmis:name IS NOT NULL AND cmis:name LIKE 'F_l_e_ _'", folder_count-2, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT * FROM cmis:folder WHERE cmis:name IS NOT NULL AND cmis:name NOT LIKE 'F_l_e_ _'", 2, false, "cmis:objectId", new String(), false);
|
|
}
|
|
|
|
public void testSimpleConjunction() throws Exception
|
|
{
|
|
testQuery("SELECT * FROM cmis:folder WHERE cmis:name IS NOT NULL AND cmis:name = 'Folder 1'", 1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT * FROM cmis:folder WHERE cmis:name IS NOT NULL AND cmis:name = 'Folder'", 0, false, "cmis:objectId", new String(), false);
|
|
}
|
|
|
|
public void testSimpleDisjunction() throws Exception
|
|
{
|
|
testQuery("SELECT * FROM cmis:folder WHERE cmis:name = 'Folder 1'", 1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT * FROM cmis:folder WHERE cmis:name = 'Folder 2'", 1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT * FROM cmis:folder WHERE cmis:name = 'Folder 1' OR cmis:name = 'Folder 2'", 2, false, "cmis:objectId", new String(), false);
|
|
}
|
|
|
|
/**
|
|
* In strict mode you should not be able to refer to aspect properties direct from the type
|
|
* @throws Exception
|
|
*/
|
|
public void testPropertyToSelectorBinding() throws Exception
|
|
{
|
|
testQuery("SELECT cmis:parentId FROM cmis:document", 10, false, "cmis:objectId", new String(), true, CMISQueryMode.CMS_STRICT);
|
|
testQuery("SELECT * FROM cmis:document where cmis:parentId <> 'woof://woof/woof'", 10, false, "cmis:objectId", new String(), true, CMISQueryMode.CMS_STRICT);
|
|
testQuery("SELECT D.*, O.cmis:name FROM CMIS:DOCUMENT AS D JOIN CM:OWNABLE AS O ON D.cmis:objectId = O.cmis:objectId", 1, false, "cmis:objectId", new String(), true,
|
|
CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
testQuery("SELECT * FROM cmis:document order by cmis:parentId", 10, false, "cmis:objectId", new String(), true, CMISQueryMode.CMS_STRICT);
|
|
testQuery("SELECT * FROM cmis:document where CONTAINS('cmis:parentId:*')", 10, false, "cmis:objectId", new String(), true, CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
}
|
|
|
|
public void testExists() throws Exception
|
|
{
|
|
testQuery("SELECT * FROM cmis:folder WHERE cmis:name IS NOT NULL", folder_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT * FROM cmis:folder WHERE cmis:name IS NULL", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT * FROM cmis:document WHERE cmis:name IS NOT NULL", doc_count, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT * FROM cmis:document WHERE cmis:name IS NULL", 0, false, "cmis:objectId", new String(), false);
|
|
}
|
|
|
|
public void testObjectEquals()
|
|
{
|
|
|
|
}
|
|
|
|
public void testDocumentEquals()
|
|
{
|
|
|
|
}
|
|
|
|
public void testFolderEquals() throws Exception
|
|
{
|
|
|
|
String Name = cmisConnector.createNodeInfo(f0).getName();
|
|
|
|
testQuery("SELECT * FROM cmis:folder WHERE cmis:name = '" + Name + "'", 1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT * FROM cmis:folder WHERE cmis:name = 'Folder 1'", 1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT * FROM cmis:folder WHERE cmis:parentId = '" + base.toString() + "'", 4, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT * FROM cmis:folder WHERE cmis:allowedChildObjectTypeIds = 'meep'", 0, false, "cmis:objectId", new String(), true);
|
|
}
|
|
|
|
public void test_IN_TREE() throws Exception
|
|
{
|
|
String id = cmisConnector.createNodeInfo(f0).getObjectId();
|
|
|
|
testQuery("SELECT * FROM cmis:folder WHERE IN_TREE('" + id + "')", 6, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT * FROM cmis:folder F WHERE IN_TREE(F, '" + id + "')", 6, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT * FROM cmis:folder X WHERE IN_TREE(F, '" + id + "')", 6, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT D.*, O.* FROM cmis:document AS D JOIN cm:ownable AS O ON D.cmis:objectId = O.cmis:objectId WHERE IN_TREE(D, '" + id + "')", 1, false, "cmis:objectId",
|
|
new String(), false, CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
testQuery("SELECT D.*, O.* FROM cmis:document AS D JOIN cm:ownable AS O ON D.cmis:objectId = O.cmis:objectId WHERE IN_TREE('" + id + "')", 1, false, "cmis:objectId",
|
|
new String(), true, CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
testQuery("SELECT D.*, O.* FROM cmis:document AS D JOIN cm:ownable AS O ON D.cmis:objectId = O.cmis:objectId WHERE IN_TREE('" + id + ";versionLabel" + "')", 0, false, "cmis:objectId",
|
|
new String(), true, CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
|
|
testQuery("SELECT * FROM cmis:folder WHERE IN_TREE('woof://woof/woof')", 0, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT * FROM cmis:folder WHERE IN_TREE('woof://woof/woof;woof')", 0, false, "cmis:objectId", new String(), true);
|
|
}
|
|
|
|
public void test_IN_FOLDER() throws Exception
|
|
{
|
|
String id = cmisConnector.createNodeInfo(f0).getObjectId();
|
|
|
|
testQuery("SELECT * FROM cmis:folder WHERE IN_FOLDER('" + id + "')", 2, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT * FROM cmis:folder F WHERE IN_FOLDER(F, '" + id + "')", 2, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT * FROM cmis:folder X WHERE IN_FOLDER(F, '" + id + "')", 2, false, "cmis:objectId", new String(), true);
|
|
|
|
testQuery("SELECT D.*, O.* FROM cmis:document AS D JOIN cm:ownable AS O ON D.cmis:objectId = O.cmis:objectId WHERE IN_FOLDER(D, '" + id + "')", 1, false, "cmis:objectId",
|
|
new String(), false, CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
testQuery("SELECT D.*, O.* FROM cmis:document AS D JOIN cm:ownable AS O ON D.cmis:objectId = O.cmis:objectId WHERE IN_FOLDER('" + id + "')", 1, false, "cmis:objectId",
|
|
new String(), true, CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
testQuery("SELECT D.*, O.* FROM cmis:document AS D JOIN cm:ownable AS O ON D.cmis:objectId = O.cmis:objectId WHERE IN_FOLDER('" + id + ";versionLabel" + "')", 0, false, "cmis:objectId",
|
|
new String(), true, CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
|
|
// TODO: Id + label is indistinguishable from label and so is never hit in the coes at the moment
|
|
// testQuery("SELECT * FROM cmis:folder WHERE IN_FOLDER('woof://woof/woof;woof')", 2, false, "cmis:objectId",
|
|
// new String(), false);
|
|
testQuery("SELECT * FROM cmis:folder WHERE IN_FOLDER('woof://woof/woof')", 0, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT * FROM cmis:folder WHERE IN_FOLDER('woof://woof/woof;woof')", 0, false, "cmis:objectId", new String(), false);
|
|
}
|
|
|
|
public void testFTS() throws Exception
|
|
{
|
|
testQuery("SELECT SCORE(), D.* FROM cmis:document D WHERE D.cmis:contentStreamFileName = 'zebra'", doc_count-1, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT * FROM cmis:document WHERE CONTAINS('\\'zebra\\'') AND CONTAINS('\\'quick\\'')", doc_count-1, false, "cmis:objectId", new String(), true);
|
|
testQuery("SELECT SCORE()as ONE, SCORE()as TWO, D.* FROM cmis:document D WHERE CONTAINS('\\'zebra\\'')", doc_count-1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT * FROM cmis:document WHERE CONTAINS('\\'zebra\\'')", doc_count-1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT * FROM cmis:document WHERE CONTAINS('\\'quick\\'')", 1, false, "cmis:objectId", new String(), false);
|
|
testQuery("SELECT * FROM cmis:document WHERE CONTAINS('\\'quick\\'')", 1, false, "cmis:objectId", new String(), false);
|
|
testExtendedQuery("SELECT * FROM cmis:document D WHERE CONTAINS(D, 'cmis:name:\\'Tutorial\\'')", 1, false, "cmis:objectId", new String(), false);
|
|
testExtendedQuery("SELECT cmis:name as BOO FROM cmis:document D WHERE CONTAINS('BOO:\\'Tutorial\\'')", 1, false, "cmis:objectId", new String(), false);
|
|
testExtendedQuery("SELECT * FROM cmis:document D WHERE CONTAINS('TEXT:\\'zebra\\'')", doc_count-1, false, "cmis:objectId", new String(), false);
|
|
testExtendedQuery("SELECT * FROM cmis:document D WHERE CONTAINS('ALL:\\'zebra\\'')", doc_count-1, false, "cmis:objectId", new String(), false);
|
|
testExtendedQuery("SELECT * FROM cmis:document D WHERE CONTAINS('d:content:\\'zebra\\'')", doc_count-1, false, "cmis:objectId", new String(), false);
|
|
}
|
|
|
|
public void testScoreValues()
|
|
{
|
|
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT SCORE() AS ONE FROM cmis:document WHERE CONTAINS('cmis:name:\\'DD\\' and \\'Four\\'') AND cmis:name = 'DD\\''",
|
|
rootNodeRef.getStoreRef());
|
|
options.setQueryMode(CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(1, rs.getLength());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
System.out.println(row.getValue("cmis:objectId") + " Score " + row.getScore() + " " + row.getScores());
|
|
}
|
|
rs.close();
|
|
rs = null;
|
|
|
|
options = new CMISQueryOptions("SELECT SCORE() AS ONE FROM cmis:document WHERE CONTAINS('\\'Four zebra durian\\'')", rootNodeRef.getStoreRef());
|
|
rs = cmisQueryService.query(options);
|
|
assertEquals(1, rs.getLength());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
System.out.println(row.getValue("cmis:objectId") + " Score " + row.getScore() + " " + row.getScores());
|
|
}
|
|
rs.close();
|
|
rs = null;
|
|
|
|
options = new CMISQueryOptions("SELECT SCORE() AS ONE FROM cmis:document WHERE CONTAINS('\\'Zebra\\'')", rootNodeRef.getStoreRef());
|
|
rs = cmisQueryService.query(options);
|
|
assertEquals(doc_count-1, rs.getLength());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
System.out.println(row.getValue("cmis:objectId") + " Score " + row.getScore() + " " + row.getScores());
|
|
}
|
|
rs.close();
|
|
rs = null;
|
|
}
|
|
|
|
public void testBasicSelectAsGuest() throws Exception
|
|
{
|
|
runAs("guest");
|
|
testQuery("SELECT * FROM cmis:document", 0, false, "cmis:objectId", new String(), false);
|
|
|
|
}
|
|
|
|
public void testBasicSelectAsCmis() throws Exception
|
|
{
|
|
runAs("cmis");
|
|
testQuery("SELECT * FROM cmis:document", doc_count-3, false, "cmis:objectId", new String(), false);
|
|
|
|
}
|
|
|
|
public void testBasicSelect() throws Exception
|
|
{
|
|
testQuery("SELECT * FROM cmis:document", doc_count, false, "cmis:objectId", new String(), false);
|
|
}
|
|
|
|
public void testBasicDefaultMetaData()
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM cmis:document", rootNodeRef.getStoreRef());
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
CMISResultSetMetaData md = rs.getMetaData();
|
|
assertNotNull(md.getQueryOptions());
|
|
TypeDefinitionWrapper typeDef = cmisDictionaryService.findType(BaseTypeId.CMIS_DOCUMENT.value());
|
|
int count = 0;
|
|
for (PropertyDefinitionWrapper pdef : typeDef.getProperties())
|
|
{
|
|
count++;
|
|
}
|
|
assertEquals(count, md.getColumnNames().length);
|
|
assertNotNull(md.getColumn(PropertyIds.OBJECT_ID));
|
|
assertEquals(1, md.getSelectors().length);
|
|
assertNotNull(md.getSelector(""));
|
|
rs.close();
|
|
}
|
|
|
|
public void testBasicMetaData()
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT DOC.cmis:objectId, DOC.cmis:objectId AS ID FROM cmis:document AS DOC", rootNodeRef.getStoreRef());
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
CMISResultSetMetaData md = rs.getMetaData();
|
|
assertNotNull(md.getQueryOptions());
|
|
assertEquals(2, md.getColumnNames().length);
|
|
assertNotNull(md.getColumn("DOC.cmis:objectId"));
|
|
assertNotNull(md.getColumn("ID"));
|
|
assertEquals(1, md.getSelectors().length);
|
|
assertNotNull(md.getSelector("DOC"));
|
|
rs.close();
|
|
}
|
|
|
|
public void testBasicColumns()
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT DOC.cmis:objectId, DOC.cmis:objectTypeId AS ID FROM cmis:folder AS DOC", rootNodeRef.getStoreRef());
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
CMISResultSetMetaData md = rs.getMetaData();
|
|
assertNotNull(md.getQueryOptions());
|
|
assertEquals(2, md.getColumnNames().length);
|
|
assertNotNull(md.getColumn("DOC.cmis:objectId"));
|
|
assertNotNull(md.getColumn("ID"));
|
|
assertEquals(1, md.getSelectors().length);
|
|
assertNotNull(md.getSelector("DOC"));
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
System.out.println("Id " + row.getValue("ID"));
|
|
}
|
|
rs.close();
|
|
}
|
|
|
|
public void testBasicAllDocumentColumns()
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT DOC.* FROM cmis:document AS DOC", rootNodeRef.getStoreRef());
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
|
|
CMISResultSetMetaData md = rs.getMetaData();
|
|
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
for (String column : md.getColumnNames())
|
|
{
|
|
System.out.println("Column " + column + " value =" + row.getValue(column));
|
|
}
|
|
System.out.println("\n\n");
|
|
}
|
|
rs.close();
|
|
}
|
|
|
|
public void testBasicAllFolderColumns()
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM cmis:folder AS DOC", cmisConnector.getRootStoreRef());
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
|
|
CMISResultSetMetaData md = rs.getMetaData();
|
|
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
for (String column : md.getColumnNames())
|
|
{
|
|
System.out.println("Column " + column + " value =" + row.getValue(column));
|
|
}
|
|
System.out.println("\n\n");
|
|
}
|
|
rs.close();
|
|
}
|
|
|
|
public void testBasicAll_ST_SITES_Columns()
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM st:sites AS DOC", cmisConnector.getRootStoreRef());
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
|
|
CMISResultSetMetaData md = rs.getMetaData();
|
|
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
for (String column : md.getColumnNames())
|
|
{
|
|
System.out.println("Column " + column + " value =" + row.getValue(column));
|
|
}
|
|
System.out.println("\n\n");
|
|
System.out.println(row.getValues());
|
|
System.out.println("\n\n");
|
|
}
|
|
|
|
rs.close();
|
|
}
|
|
|
|
public void testFunctionColumns()
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions(
|
|
"SELECT DOC.cmis:name AS cmis:name, \nLOWER(\tDOC.cmis:name \n), LOWER ( DOC.cmis:name ) AS Lcmis:name, UPPER ( DOC.cmis:name ) , UPPER(DOC.cmis:name) AS Ucmis:name, Score(), SCORE() AS S1, SCORE() AS SCORED FROM cmis:folder AS DOC",
|
|
rootNodeRef.getStoreRef());
|
|
options.setQueryMode(CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
|
|
CMISResultSetMetaData md = rs.getMetaData();
|
|
assertNotNull(md.getQueryOptions());
|
|
assertEquals(8, md.getColumnNames().length);
|
|
assertNotNull(md.getColumn("cmis:name"));
|
|
assertNotNull(md.getColumn("LOWER(\tDOC.cmis:name \n)"));
|
|
assertNotNull(md.getColumn("Lcmis:name"));
|
|
assertNotNull(md.getColumn("UPPER ( DOC.cmis:name )"));
|
|
assertNotNull(md.getColumn("Ucmis:name"));
|
|
assertNotNull(md.getColumn("SEARCH_SCORE"));
|
|
assertNotNull(md.getColumn("S1"));
|
|
assertNotNull(md.getColumn("SCORED"));
|
|
assertEquals(1, md.getSelectors().length);
|
|
assertNotNull(md.getSelector("DOC"));
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
System.out.println("\n\n");
|
|
System.out.println(row.getValues());
|
|
System.out.println("\n\n");
|
|
}
|
|
rs.close();
|
|
}
|
|
|
|
public void testParse1() throws RecognitionException
|
|
{
|
|
String query = "SELECT UPPER(1.0) AS WOOF FROM cmis:document AS DOC LEFT OUTER JOIN cmis:folder AS FOLDER ON DOC.cmis:name = FOLDER.cmis:name WHERE LOWER(DOC.cmis:name) = ' woof' AND CONTAINS('one two three') AND CONTAINS('DOC.cmis:name:lemur AND woof') AND (DOC.cmis:name in ('one', 'two') AND IN_FOLDER('meep') AND DOC.cmis:name like 'woof' and DOC.cmis:name = 'woof' and DOC.cmis:objectId = 'meep') ORDER BY DOC.cmis:name DESC, WOOF";
|
|
parse(query);
|
|
}
|
|
|
|
public void testParse2() throws RecognitionException
|
|
{
|
|
String query = "SELECT TITLE, AUTHORS, DATE FROM WHITE_PAPER WHERE ( IN_TREE( 'ID00093854763') ) AND ( 'SMITH' = ANY AUTHORS )";
|
|
parse(query);
|
|
}
|
|
|
|
public void testParse3() throws RecognitionException
|
|
{
|
|
String query = "SELECT cmis:objectId, SCORE() AS X, DESTINATION, DEPARTURE_DATES FROM TRAVEL_BROCHURE WHERE ( CONTAINS('CARIBBEAN CENTRAL AMERICA CRUISE TOUR') ) AND ( '2009-1-1' < ANY DEPARTURE_DATES ) ORDER BY X DESC";
|
|
parse(query);
|
|
}
|
|
|
|
public void testParse4() throws RecognitionException
|
|
{
|
|
String query = "SELECT * FROM CAR_REVIEW WHERE ( LOWER(MAKE) = 'buick' ) OR ( ANY FEATURES IN ('NAVIGATION SYSTEM', 'SATELLITE RADIO', 'MP3' ) )";
|
|
parse(query);
|
|
}
|
|
|
|
public void testParse5() throws RecognitionException
|
|
{
|
|
String query = "SELECT Y.CLAIM_NUM, X.PROPERTY_ADDRESS, Y.DAMAGE_ESTIMATES FROM POLICY AS X JOIN CLAIMS AS Y ON X.POLICY_NUM = Y.POLICY_NUM WHERE ( 100000 <= ANY Y.DAMAGE_ESTIMATES ) AND ( Y.CAUSE NOT LIKE '%Katrina%' )";
|
|
parse(query);
|
|
}
|
|
|
|
public void testParse6() throws RecognitionException
|
|
{
|
|
String query = "SELECT * FROM CM_TITLED";
|
|
parse(query);
|
|
query = "SELECT D.*, T.* FROM DOCUMENT AS D JOIN CM_TITLED AS T ON D.OBJECTID = T.OBJECTID";
|
|
parse(query);
|
|
query = "SELECT D.*, T.* FROM CM_TITLED T JOIN DOCUMENT D ON D.OBJECTID = T.OBJECTID";
|
|
parse(query);
|
|
}
|
|
|
|
public void testParse7() throws RecognitionException
|
|
{
|
|
String query = "SELECT * from DOCUMENT D JOIN DOCUMENT DD ON D.ID = DD.ID ";
|
|
parse(query);
|
|
}
|
|
|
|
public void testParse8() throws RecognitionException
|
|
{
|
|
String query = "SELECT * from ((FOLDER F JOIN RELATIONSHIP RL ON F.ID = RL.ID))";
|
|
parse(query);
|
|
}
|
|
|
|
public void testDateFormattingErrors() throws Exception
|
|
{
|
|
testQuery("SELECT * FROM cm:lockable L WHERE L.cm:expiryDate = TIMESTAMP '2012-12-12T12:12:12.012Z'", 1, false, "cmis:objectId", new String(), false,
|
|
CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
testQuery("SELECT * FROM cm:lockable L WHERE L.cm:expiryDate = TIMESTAMP '2012-012-12T12:12:12.012Z'", 1, false, "cmis:objectId", new String(), false,
|
|
CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
testQuery("SELECT * FROM cm:lockable L WHERE L.cm:expiryDate = TIMESTAMP '2012-2-12T12:12:12.012Z'", 0, false, "cmis:objectId", new String(), false,
|
|
CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
testQuery("SELECT * FROM cm:lockable L WHERE L.cm:expiryDate = TIMESTAMP 'Mon Dec 12 12:12:12.012 GMT 2012'", 1, false, "cmis:objectId", new String(), true,
|
|
CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
}
|
|
|
|
public void testAspectProperties()
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM cm:ownable O", rootNodeRef.getStoreRef());
|
|
options.setQueryMode(CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
|
|
CMISResultSetMetaData md = rs.getMetaData();
|
|
assertNotNull(md.getQueryOptions());
|
|
assertEquals(12, md.getColumnNames().length);
|
|
assertNotNull(md.getColumn("O.cm:owner"));
|
|
assertEquals(1, md.getSelectors().length);
|
|
assertNotNull(md.getSelector("O"));
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
System.out.println("\n\n");
|
|
System.out.println(row.getValues());
|
|
System.out.println("\n\n");
|
|
}
|
|
rs.close();
|
|
}
|
|
|
|
public void testAspectJoin() throws Exception
|
|
{
|
|
testQuery(
|
|
"select o.*, t.* from ( cm:ownable o join cm:titled t on o.cmis:objectId = t.cmis:objectId JOIN cmis:document AS D ON D.cmis:objectId = o.cmis:objectId ) where o.cm:owner = 'andy' and t.cm:title = 'Alfresco tutorial' and CONTAINS(D, '\\'jumped\\'') and D.cmis:contentStreamLength <> 2",
|
|
1, false, "cmis:objectId", new String(), false, CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
|
|
testQuery("SELECT * FROM cm:ownable", 1, false, "cmis:objectId", new String(), false, CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
testQuery("SELECT * FROM cm:ownable where cm:owner = 'andy'", 1, false, "cmis:objectId", new String(), false, CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
testQuery("SELECT * FROM cm:ownable where cm:owner = 'bob'", 0, false, "cmis:objectId", new String(), false, CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
testQuery("SELECT D.*, O.* FROM cmis:document AS D JOIN cm:ownable AS O ON D.cmis:objectId = O.cmis:objectId", 1, false, "cmis:objectId", new String(), false,
|
|
CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
testQuery("SELECT D.*, O.* FROM cmis:document AS D JOIN cm:ownable AS O ON D.cmis:objectId = O.cmis:objectId", 1, false, "cmis:objectId", new String(), false,
|
|
CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
testQuery(
|
|
"SELECT D.*, O.*, T.* FROM cmis:document AS D JOIN cm:ownable AS O ON D.cmis:objectId = O.cmis:objectId JOIN cm:titled AS T ON T.cmis:objectId = D.cmis:objectId",
|
|
1, false, "cmis:objectId", new String(), false, CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
testQuery("SELECT D.*, O.* FROM cm:ownable O JOIN cmis:document D ON D.cmis:objectId = O.cmis:objectId", 1, false, "cmis:objectId", new String(), false,
|
|
CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
testQuery("SELECT D.*, F.* FROM cmis:folder F JOIN cmis:document D ON D.cmis:objectId = F.cmis:objectId", 0, false, "cmis:objectId", new String(), false,
|
|
CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
testQuery("SELECT O.*, T.* FROM cm:ownable O JOIN cm:titled T ON O.cmis:objectId = T.cmis:objectId", 1, false, "cmis:objectId", new String(), false,
|
|
CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
testQuery("select o.*, t.* from cm:ownable o join cm:titled t on o.cmis:objectId = t.cmis:objectId", 1, false, "cmis:objectId", new String(), false,
|
|
CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
testQuery("sElEcT o.*, T.* fRoM cm:ownable o JoIn cm:titled T oN o.cmis:objectId = T.cmis:objectId", 1, false, "cmis:objectId", new String(), false,
|
|
CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
testQuery("select o.*, t.* from ( cm:ownable o join cm:titled t on o.cmis:objectId = t.cmis:objectId )", 1, false, "cmis:objectId", new String(), false,
|
|
CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
testQuery("select o.*, t.* from ( cm:ownable o join cm:titled t on o.cmis:objectId = t.cmis:objectId JOIN cmis:document AS D ON D.cmis:objectId = o.cmis:objectId )", 1,
|
|
false, "cmis:objectId", new String(), false, CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
testQuery(
|
|
"select o.*, t.* from ( cm:ownable o join cm:titled t on o.cmis:objectId = t.cmis:objectId JOIN cmis:document AS D ON D.cmis:objectId = o.cmis:objectId ) where o.cm:owner = 'andy' and t.cm:title = 'Alfresco tutorial' and CONTAINS(D, '\\'jumped\\'') and D.cmis:contentStreamLength <> 2",
|
|
1, false, "cmis:objectId", new String(), false, CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
testQuery(
|
|
"select o.*, t.* from ( cm:ownable o join cm:titled t on o.cmis:objectId = t.cmis:objectId JOIN cmis:document AS D ON D.cmis:objectId = o.cmis:objectId ) where o.cm:owner = 'andy' and t.cm:title = 'Alfresco tutorial' and CONTAINS(D, 'jumped') and D.cmis:contentStreamLength <> 2",
|
|
1, false, "cmis:objectId", new String(), false, CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
}
|
|
|
|
public void testPaging()
|
|
{
|
|
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM cmis:folder", rootNodeRef.getStoreRef());
|
|
List<String> expected = new ArrayList<String>(10);
|
|
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(folder_count, rs.getLength());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:objectId");
|
|
String id = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
expected.add(id);
|
|
}
|
|
rs.close();
|
|
|
|
for (int skip = 0; skip < 20; skip++)
|
|
{
|
|
for (int max = 0; max < 20; max++)
|
|
{
|
|
doPage(expected, skip, max);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
public void testFTSConnectives() throws Exception
|
|
{
|
|
testQuery("SELECT * FROM cmis:document where contains('\\'one\\' OR \\'zebra\\'')", doc_count-1, false, "cmis:objectId", new String(), false, CMISQueryMode.CMS_STRICT);
|
|
testQuery("SELECT * FROM cmis:document where contains('\\'one\\' or \\'zebra\\'')", doc_count-1, false, "cmis:objectId", new String(), false, CMISQueryMode.CMS_STRICT);
|
|
testQuery("SELECT * FROM cmis:document where contains('\\'one\\' \\'zebra\\'')", 1, false, "cmis:objectId", new String(), false, CMISQueryMode.CMS_STRICT);
|
|
testQuery("SELECT * FROM cmis:document where contains('\\'one\\' and \\'zebra\\'')", 1, false, "cmis:objectId", new String(), false,
|
|
CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
testQuery("SELECT * FROM cmis:document where contains('\\'one\\' or \\'zebra\\'')", doc_count-1, false, "cmis:objectId", new String(), false,
|
|
CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
testQuery("SELECT * FROM cmis:document where contains('\\'one\\' \\'zebra\\'')", 1, false, "cmis:objectId", new String(), false,
|
|
CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM cmis:document where contains('\\'one\\' \\'zebra\\'')", rootNodeRef.getStoreRef());
|
|
// options.setQueryMode(CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(1, rs.length());
|
|
rs.close();
|
|
|
|
options = new CMISQueryOptions("SELECT * FROM cmis:document where contains('\\'one\\' \\'zebra\\'')", rootNodeRef.getStoreRef());
|
|
options.setQueryMode(CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
options.setQueryMode(CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS);
|
|
rs = cmisQueryService.query(options);
|
|
assertEquals(doc_count-1, rs.length());
|
|
rs.close();
|
|
}
|
|
|
|
public void testLikeEscaping() throws Exception
|
|
{
|
|
// TODO:
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name LIKE 'Alfresco Tutorial'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name LIKE 'Alfresco Tutoria_'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name LIKE 'Alfresco T_______'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name LIKE 'Alfresco T______\\_'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name LIKE 'Alfresco T%'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name LIKE 'Alfresco'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name LIKE 'Alfresco%'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name LIKE 'Alfresco T\\%'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name LIKE 'GG*GG'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name LIKE '__*__'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name LIKE '%*%'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name LIKE 'HH?HH'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name LIKE '__?__'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name LIKE '%?%'", 1, false, "cmis:name", new String(), false);
|
|
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name LIKE 'AA%'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name LIKE 'AA\\%'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name LIKE 'A%'", 2, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name LIKE 'a%'", 2, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name LIKE 'A\\%'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name LIKE 'BB_'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name LIKE 'BB\\_'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name LIKE 'B__'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name LIKE 'B_\\_'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name LIKE 'B\\_\\_'", 0, false, "cmis:name", new String(), false);
|
|
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name LIKE 'CC\\\\'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT cmis:name FROM cmis:document WHERE cmis:name LIKE 'DD\\''", 1, false, "cmis:name", new String(), false);
|
|
}
|
|
|
|
public void testColumnAliasUse() throws Exception
|
|
{
|
|
testQuery("SELECT cmis:name as myname FROM cmis:document WHERE myname LIKE 'Alfresco Tutorial'", 1, false, "myname", new String(), false);
|
|
testQuery("SELECT cmis:name as myname FROM cmis:document WHERE myname LIKE 'A%' order by myname", 2, false, "cmis:name", new String(), false);
|
|
testExtendedQuery("SELECT SCORE() as myscore, D.cmis:name as myname FROM cmis:document D WHERE CONTAINS(D, 'myname:\\'Tutorial\\'') order by myscore", 1, false,
|
|
"cmis:objectId", new String(), false);
|
|
testExtendedQuery("SELECT SCORE() as myscore, D.cmis:name FROM cmis:document D WHERE CONTAINS(D, 'cmis:name:\\'Tutorial\\'') and myscore > 0.5 order by myscore", 9, false,
|
|
"cmis:objectId", new String(), true);
|
|
|
|
}
|
|
|
|
private void doPage(List<String> expected, int skip, int max)
|
|
{
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM cmis:folder", rootNodeRef.getStoreRef());
|
|
options.setSkipCount(skip);
|
|
options.setMaxItems(max);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals("Skip = " + skip + " max = " + max, skip + max > folder_count ? Math.max(folder_count - skip, 0) : max, rs.getLength());
|
|
assertEquals("Skip = " + skip + " max = " + max, (skip + max) < folder_count, rs.hasMore());
|
|
assertEquals("Skip = " + skip + " max = " + max, skip, rs.getStart());
|
|
int actualPosition = skip;
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("cmis:objectId");
|
|
String id = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertEquals("Skip = " + skip + " max = " + max + " actual = " + actualPosition, expected.get(actualPosition), id);
|
|
actualPosition++;
|
|
}
|
|
}
|
|
|
|
private CommonTree parse(String query) throws RecognitionException
|
|
{
|
|
CharStream cs = new ANTLRStringStream(query);
|
|
CMISLexer lexer = new CMISLexer(cs);
|
|
CommonTokenStream tokens = new CommonTokenStream(lexer);
|
|
CMISParser parser = new CMISParser(tokens);
|
|
CommonTree queryNode = (CommonTree) parser.query().getTree();
|
|
return queryNode;
|
|
}
|
|
|
|
public void test_d_text() throws Exception
|
|
{
|
|
addTypeTestData();
|
|
assertNotNull(dictionaryService.getType(extendedContent));
|
|
assertNotNull(cmisDictionaryService.findTypeByQueryName("test:extendedContent"));
|
|
|
|
testQuery("SELECT * FROM test:extendedContent", 1, false, "cmis:name", new String(), false);
|
|
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM test:extendedContent", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(1, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("test:singleTextBoth");
|
|
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertEquals("Un tokenised", value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("test:singleTextBoth");
|
|
assertEquals(PropertyType.STRING, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
|
|
sValue = row.getValue("test:singleTextUntokenised");
|
|
value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertEquals("Un tokenised", value);
|
|
column = rs.getResultSetMetaData().getColumn("test:singleTextUntokenised");
|
|
assertEquals(PropertyType.STRING, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
|
|
sValue = row.getValue("test:singleTextTokenised");
|
|
value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertEquals("Un tokenised", value);
|
|
column = rs.getResultSetMetaData().getColumn("test:singleTextTokenised");
|
|
assertEquals(PropertyType.STRING, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
|
|
sValue = row.getValue("test:multipleTextBoth");
|
|
assert (sValue instanceof Collection<?>);
|
|
Collection<String> collection = DefaultTypeConverter.INSTANCE.getCollection(String.class, sValue);
|
|
assertEquals(2, collection.size());
|
|
String[] members = new String[2];
|
|
members = collection.toArray(members);
|
|
assertEquals("Un tokenised", members[0]);
|
|
assertEquals("two parts", members[1]);
|
|
column = rs.getResultSetMetaData().getColumn("test:multipleTextBoth");
|
|
assertEquals(PropertyType.STRING, column.getCMISDataType());
|
|
assertEquals(Cardinality.MULTI, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
|
|
sValue = row.getValue("test:multipleTextUntokenised");
|
|
assert (sValue instanceof Collection<?>);
|
|
collection = DefaultTypeConverter.INSTANCE.getCollection(String.class, sValue);
|
|
assertEquals(2, collection.size());
|
|
members = new String[2];
|
|
members = collection.toArray(members);
|
|
assertEquals("Un tokenised", members[0]);
|
|
assertEquals("two parts", members[1]);
|
|
column = rs.getResultSetMetaData().getColumn("test:multipleTextUntokenised");
|
|
assertEquals(PropertyType.STRING, column.getCMISDataType());
|
|
assertEquals(Cardinality.MULTI, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
|
|
sValue = row.getValue("test:multipleTextTokenised");
|
|
assert (sValue instanceof Collection<?>);
|
|
collection = DefaultTypeConverter.INSTANCE.getCollection(String.class, sValue);
|
|
assertEquals(2, collection.size());
|
|
members = new String[2];
|
|
members = collection.toArray(members);
|
|
assertEquals("Un tokenised", members[0]);
|
|
assertEquals("two parts", members[1]);
|
|
column = rs.getResultSetMetaData().getColumn("test:multipleTextTokenised");
|
|
assertEquals(PropertyType.STRING, column.getCMISDataType());
|
|
assertEquals(Cardinality.MULTI, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
}
|
|
rs.close();
|
|
|
|
// d:text single
|
|
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextBoth = 'Un tokenised'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextBoth <> 'tokenised'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextBoth LIKE 'U_ to%sed'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextBoth NOT LIKE 't__eni%'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextBoth IN ('Un tokenised', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextBoth NOT IN ('Un tokenized')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE 'Un tokenised' = ANY test:singleTextBoth ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:singleTextBoth IN ('Un tokenised', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:singleTextBoth NOT IN ('Un tokenized')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextBoth < 'tokenised'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextBoth < 'Un tokenised'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextBoth < 'V'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextBoth < 'U'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextBoth <= 'tokenised'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextBoth <= 'Un tokenised'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextBoth <= 'V'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextBoth <= 'U'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextBoth > 'tokenised'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextBoth > 'Un tokenised'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextBoth > 'V'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextBoth > 'U'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextBoth >= 'tokenised'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextBoth >= 'Un tokenised'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextBoth >= 'V'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextBoth >= 'U'", 1, false, "cmis:name", new String(), false);
|
|
|
|
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextUntokenised = 'Un tokenised'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextUntokenised <> 'tokenised'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextUntokenised LIKE 'U_ to%sed'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextUntokenised NOT LIKE 't__eni%'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextUntokenised IN ('Un tokenised', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextUntokenised NOT IN ('Un tokenized')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE 'Un tokenised' = ANY test:singleTextUntokenised ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:singleTextUntokenised IN ('Un tokenised', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:singleTextUntokenised NOT IN ('Un tokenized')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextUntokenised < 'tokenised'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextUntokenised < 'Un tokenised'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextUntokenised < 'V'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextUntokenised < 'U'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextUntokenised <= 'tokenised'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextUntokenised <= 'Un tokenised'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextUntokenised <= 'V'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextUntokenised <= 'U'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextUntokenised > 'tokenised'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextUntokenised > 'Un tokenised'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextUntokenised > 'V'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextUntokenised > 'U'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextUntokenised >= 'tokenised'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextUntokenised >= 'Un tokenised'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextUntokenised >= 'V'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextUntokenised >= 'U'", 1, false, "cmis:name", new String(), false);
|
|
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextTokenised = 'tokenised'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextTokenised <> 'tokenized'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextTokenised LIKE 'to%sed'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextTokenised NOT LIKE 'Ut__eniz%'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextTokenised IN ('tokenised', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleTextTokenised NOT IN ('tokenized')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE 'tokenised' = ANY test:singleTextTokenised ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:singleTextTokenised IN ('tokenised', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:singleTextTokenised NOT IN ('tokenized')", 1, false, "cmis:name", new String(), true);
|
|
// Ranges do not make a lot of sense for tokenized fields
|
|
|
|
// d:text single by alias
|
|
|
|
testQuery("SELECT T.test:singleTextBoth as alias FROM test:extendedContent as T WHERE alias = 'Un tokenised'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT T.test:singleTextBoth as alias FROM test:extendedContent as T WHERE alias <> 'tokenised'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT T.test:singleTextBoth as alias FROM test:extendedContent as T WHERE alias LIKE 'U_ to%sed'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT T.test:singleTextBoth as alias FROM test:extendedContent as T WHERE alias NOT LIKE 't__eni%'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT T.test:singleTextBoth as alias FROM test:extendedContent as T WHERE alias IN ('Un tokenised', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT T.test:singleTextBoth as alias FROM test:extendedContent as T WHERE alias NOT IN ('Un tokenized')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT T.test:singleTextBoth as alias FROM test:extendedContent as T WHERE 'Un tokenised' = ANY alias ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT T.test:singleTextBoth as alias FROM test:extendedContent as T WHERE ANY alias IN ('Un tokenised', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT T.test:singleTextBoth as alias FROM test:extendedContent as T WHERE ANY alias NOT IN ('Un tokenized')", 1, false, "cmis:name", new String(), true);
|
|
|
|
testQuery("SELECT T.test:singleTextUntokenised as alias FROM test:extendedContent as T WHERE alias = 'Un tokenised'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT T.test:singleTextUntokenised as alias FROM test:extendedContent as T WHERE alias <> 'tokenised'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT T.test:singleTextUntokenised as alias FROM test:extendedContent as T WHERE alias LIKE 'U_ to%sed'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT T.test:singleTextUntokenised as alias FROM test:extendedContent as T WHERE alias NOT LIKE 't__eni%'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT T.test:singleTextUntokenised as alias FROM test:extendedContent as T WHERE alias IN ('Un tokenised', 'Monkey')", 1, false, "cmis:name", new String(),
|
|
false);
|
|
testQuery("SELECT T.test:singleTextUntokenised as alias FROM test:extendedContent as T WHERE alias NOT IN ('Un tokenized')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT T.test:singleTextUntokenised as alias FROM test:extendedContent as T WHERE 'Un tokenised' = ANY alias ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT T.test:singleTextUntokenised as alias FROM test:extendedContent as T WHERE ANY alias IN ('Un tokenised', 'Monkey')", 1, false, "cmis:name", new String(),
|
|
true);
|
|
testQuery("SELECT T.test:singleTextUntokenised as alias FROM test:extendedContent as T WHERE ANY alias NOT IN ('Un tokenized')", 1, false, "cmis:name", new String(), true);
|
|
|
|
testQuery("SELECT test:singleTextTokenised as alias FROM test:extendedContent WHERE alias = 'tokenised'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleTextTokenised as alias FROM test:extendedContent WHERE alias <> 'tokenized'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleTextTokenised as alias FROM test:extendedContent WHERE alias LIKE 'to%sed'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleTextTokenised as alias FROM test:extendedContent WHERE alias NOT LIKE 'Ut__eniz%'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleTextTokenised as alias FROM test:extendedContent WHERE alias IN ('tokenised', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleTextTokenised as alias FROM test:extendedContent WHERE alias NOT IN ('tokenized')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleTextTokenised as alias FROM test:extendedContent WHERE 'tokenised' = ANY alias ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleTextTokenised as alias FROM test:extendedContent WHERE ANY alias IN ('tokenised', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleTextTokenised as alias FROM test:extendedContent WHERE ANY alias NOT IN ('tokenized')", 1, false, "cmis:name", new String(), true);
|
|
|
|
// d:text multiple
|
|
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleTextBoth = 'Un tokenised'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleTextBoth <> 'tokenised'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleTextBoth LIKE 'U_ to%sed'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleTextBoth NOT LIKE 't__eni%'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleTextBoth IN ('Un tokenised', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleTextBoth NOT IN ('Un tokenized')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE 'Un tokenised' = ANY test:multipleTextBoth ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleTextBoth IN ('Un tokenised', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleTextBoth NOT IN ('Un tokenized')", 1, false, "cmis:name", new String(), false);
|
|
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleTextUntokenised = 'Un tokenised'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleTextUntokenised <> 'tokenised'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleTextUntokenised LIKE 'U_ to%sed'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleTextUntokenised NOT LIKE 't__eni%'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleTextUntokenised IN ('Un tokenised', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleTextUntokenised NOT IN ('Un tokenized')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE 'Un tokenised' = ANY test:multipleTextUntokenised ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleTextUntokenised IN ('Un tokenised', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleTextUntokenised NOT IN ('Un tokenized')", 1, false, "cmis:name", new String(), false);
|
|
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleTextTokenised = 'tokenised'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleTextTokenised <> 'tokenized'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleTextTokenised LIKE 'to%sed'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleTextTokenised NOT LIKE 'Ut__eniz%'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleTextTokenised IN ('tokenised', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleTextTokenised NOT IN ('tokenized')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE 'tokenised' = ANY test:multipleTextTokenised ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleTextTokenised IN ('tokenised', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleTextTokenised NOT IN ('tokenized')", 1, false, "cmis:name", new String(), false);
|
|
|
|
// d:text multiple by alias
|
|
|
|
testQuery("SELECT test:multipleTextBoth as alias FROM test:extendedContent WHERE alias = 'Un tokenised'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleTextBoth as alias FROM test:extendedContent WHERE alias <> 'tokenised'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleTextBoth as alias FROM test:extendedContent WHERE alias LIKE 'U_ to%sed'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleTextBoth as alias FROM test:extendedContent WHERE alias NOT LIKE 't__eni%'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleTextBoth as alias FROM test:extendedContent WHERE alias IN ('Un tokenised', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleTextBoth as alias FROM test:extendedContent WHERE alias NOT IN ('Un tokenized')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleTextBoth as alias FROM test:extendedContent WHERE 'Un tokenised' = ANY alias ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleTextBoth as alias FROM test:extendedContent WHERE ANY alias IN ('Un tokenised', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleTextBoth as alias FROM test:extendedContent WHERE ANY alias NOT IN ('Un tokenized')", 1, false, "cmis:name", new String(), false);
|
|
|
|
testQuery("SELECT test:multipleTextUntokenised alias FROM test:extendedContent WHERE alias = 'Un tokenised'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleTextUntokenised alias FROM test:extendedContent WHERE alias <> 'tokenised'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleTextUntokenised alias FROM test:extendedContent WHERE alias LIKE 'U_ to%sed'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleTextUntokenised alias FROM test:extendedContent WHERE alias NOT LIKE 't__eni%'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleTextUntokenised alias FROM test:extendedContent WHERE alias IN ('Un tokenised', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleTextUntokenised alias FROM test:extendedContent WHERE alias NOT IN ('Un tokenized')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleTextUntokenised alias FROM test:extendedContent WHERE 'Un tokenised' = ANY alias ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleTextUntokenised alias FROM test:extendedContent WHERE ANY alias IN ('Un tokenised', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleTextUntokenised alias FROM test:extendedContent WHERE ANY alias NOT IN ('Un tokenized')", 1, false, "cmis:name", new String(), false);
|
|
|
|
testQuery("SELECT T.test:multipleTextTokenised alias FROM test:extendedContent T WHERE alias = 'tokenised'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT T.test:multipleTextTokenised alias FROM test:extendedContent T WHERE alias <> 'tokenized'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT T.test:multipleTextTokenised alias FROM test:extendedContent T WHERE alias LIKE 'to%sed'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT T.test:multipleTextTokenised alias FROM test:extendedContent T WHERE alias NOT LIKE 'Ut__eniz%'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT T.test:multipleTextTokenised alias FROM test:extendedContent T WHERE alias IN ('tokenised', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT T.test:multipleTextTokenised alias FROM test:extendedContent T WHERE alias NOT IN ('tokenized')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT T.test:multipleTextTokenised alias FROM test:extendedContent T WHERE 'tokenised' = ANY alias ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT T.test:multipleTextTokenised alias FROM test:extendedContent T WHERE ANY alias IN ('tokenised', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT T.test:multipleTextTokenised alias FROM test:extendedContent T WHERE ANY alias NOT IN ('tokenized')", 1, false, "cmis:name", new String(), false);
|
|
}
|
|
|
|
public void test_locale() throws Exception
|
|
{
|
|
addTypeTestData();
|
|
assertNotNull(dictionaryService.getType(extendedContent));
|
|
assertNotNull(cmisDictionaryService.findTypeByQueryName("test:extendedContent"));
|
|
|
|
testQuery("SELECT * FROM test:extendedContent", 1, false, "cmis:name", new String(), false);
|
|
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM test:extendedContent WHERE test:singleMLTextBoth = 'AAAA BBBB'", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
options.setLocales(Collections.singletonList(Locale.ENGLISH));
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(1, rs.length());
|
|
rs.close();
|
|
|
|
options = new CMISQueryOptions("SELECT * FROM test:extendedContent WHERE test:singleMLTextBoth = 'AAAA BBBB'", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
options.setLocales(Collections.singletonList(Locale.FRENCH));
|
|
rs = cmisQueryService.query(options);
|
|
assertEquals(1, rs.length());
|
|
rs.close();
|
|
|
|
options = new CMISQueryOptions("SELECT * FROM test:extendedContent WHERE test:singleMLTextBoth = 'AAAA BBBB'", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
options.setLocales(Collections.singletonList(Locale.FRENCH));
|
|
options.setMlAnalaysisMode(MLAnalysisMode.ALL_LANGUAGES);
|
|
rs = cmisQueryService.query(options);
|
|
assertEquals(0, rs.length());
|
|
rs.close();
|
|
|
|
options = new CMISQueryOptions("SELECT * FROM test:extendedContent WHERE test:singleMLTextBoth = 'CCCC DDDD'", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
options.setLocales(Collections.singletonList(Locale.ENGLISH));
|
|
rs = cmisQueryService.query(options);
|
|
assertEquals(1, rs.length());
|
|
rs.close();
|
|
|
|
options = new CMISQueryOptions("SELECT * FROM test:extendedContent WHERE test:singleMLTextBoth = 'CCCC DDDD'", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
options.setLocales(Collections.singletonList(Locale.ENGLISH));
|
|
options.setMlAnalaysisMode(MLAnalysisMode.ALL_LANGUAGES);
|
|
rs = cmisQueryService.query(options);
|
|
assertEquals(0, rs.length());
|
|
rs.close();
|
|
|
|
options = new CMISQueryOptions("SELECT * FROM test:extendedContent WHERE test:singleMLTextBoth = 'CCCC DDDD'", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
options.setLocales(Collections.singletonList(Locale.FRENCH));
|
|
rs = cmisQueryService.query(options);
|
|
assertEquals(1, rs.length());
|
|
rs.close();
|
|
|
|
options = new CMISQueryOptions("SELECT * FROM test:extendedContent WHERE test:singleMLTextBoth = 'CCCC DDDD'", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
options.setLocales(Collections.singletonList(Locale.FRENCH));
|
|
options.setIncludeInTransactionData(false);
|
|
rs = cmisQueryService.query(options);
|
|
assertEquals(0, rs.length());
|
|
rs.close();
|
|
|
|
I18NUtil.setLocale(Locale.UK);
|
|
|
|
options = new CMISQueryOptions("SELECT * FROM test:extendedContent WHERE test:singleMLTextBoth = 'AAAA BBBB'", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
options.setMlAnalaysisMode(MLAnalysisMode.ALL_LANGUAGES);
|
|
rs = cmisQueryService.query(options);
|
|
assertEquals(1, rs.length());
|
|
rs.close();
|
|
|
|
options = new CMISQueryOptions("SELECT * FROM test:extendedContent WHERE test:singleMLTextBoth = 'CCCC DDDD'", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
options.setMlAnalaysisMode(MLAnalysisMode.ALL_LANGUAGES);
|
|
rs = cmisQueryService.query(options);
|
|
assertEquals(0, rs.length());
|
|
rs.close();
|
|
|
|
I18NUtil.setLocale(Locale.FRANCE);
|
|
|
|
options = new CMISQueryOptions("SELECT * FROM test:extendedContent WHERE test:singleMLTextBoth = 'AAAA BBBB'", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
options.setMlAnalaysisMode(MLAnalysisMode.ALL_LANGUAGES);
|
|
rs = cmisQueryService.query(options);
|
|
assertEquals(0, rs.length());
|
|
rs.close();
|
|
|
|
options = new CMISQueryOptions("SELECT * FROM test:extendedContent WHERE test:singleMLTextBoth = 'CCCC DDDD'", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
options.setMlAnalaysisMode(MLAnalysisMode.ALL_LANGUAGES);
|
|
rs = cmisQueryService.query(options);
|
|
assertEquals(1, rs.length());
|
|
rs.close();
|
|
}
|
|
|
|
public void test_d_mltext() throws Exception
|
|
{
|
|
addTypeTestData();
|
|
assertNotNull(dictionaryService.getType(extendedContent));
|
|
assertNotNull(cmisDictionaryService.findTypeByQueryName("test:extendedContent"));
|
|
|
|
testQuery("SELECT * FROM test:extendedContent", 1, false, "cmis:name", new String(), false);
|
|
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM test:extendedContent", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(1, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("test:singleMLTextBoth");
|
|
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertEquals("AAAA BBBB", value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("test:singleMLTextBoth");
|
|
assertEquals(PropertyType.STRING, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
|
|
sValue = row.getValue("test:singleMLTextUntokenised");
|
|
value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertEquals("AAAA BBBB", value);
|
|
column = rs.getResultSetMetaData().getColumn("test:singleMLTextUntokenised");
|
|
assertEquals(PropertyType.STRING, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
|
|
sValue = row.getValue("test:singleMLTextTokenised");
|
|
value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
|
|
assertEquals("AAAA BBBB", value);
|
|
column = rs.getResultSetMetaData().getColumn("test:singleMLTextTokenised");
|
|
assertEquals(PropertyType.STRING, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
|
|
sValue = row.getValue("test:multipleMLTextBoth");
|
|
assert (sValue instanceof Collection<?>);
|
|
Collection<String> collection = DefaultTypeConverter.INSTANCE.getCollection(String.class, sValue);
|
|
assertEquals(1, collection.size());
|
|
String[] members = new String[1];
|
|
members = collection.toArray(members);
|
|
assertEquals("AAAA BBBB", members[0]);
|
|
column = rs.getResultSetMetaData().getColumn("test:multipleMLTextBoth");
|
|
assertEquals(PropertyType.STRING, column.getCMISDataType());
|
|
assertEquals(Cardinality.MULTI, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
|
|
sValue = row.getValue("test:multipleMLTextUntokenised");
|
|
assert (sValue instanceof Collection<?>);
|
|
collection = DefaultTypeConverter.INSTANCE.getCollection(String.class, sValue);
|
|
assertEquals(1, collection.size());
|
|
members = new String[1];
|
|
members = collection.toArray(members);
|
|
assertEquals("AAAA BBBB", members[0]);
|
|
column = rs.getResultSetMetaData().getColumn("test:multipleMLTextUntokenised");
|
|
assertEquals(PropertyType.STRING, column.getCMISDataType());
|
|
assertEquals(Cardinality.MULTI, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
|
|
sValue = row.getValue("test:multipleMLTextTokenised");
|
|
assert (sValue instanceof Collection<?>);
|
|
collection = DefaultTypeConverter.INSTANCE.getCollection(String.class, sValue);
|
|
assertEquals(1, collection.size());
|
|
members = new String[1];
|
|
members = collection.toArray(members);
|
|
assertEquals("AAAA BBBB", members[0]);
|
|
column = rs.getResultSetMetaData().getColumn("test:multipleMLTextTokenised");
|
|
assertEquals(PropertyType.STRING, column.getCMISDataType());
|
|
assertEquals(Cardinality.MULTI, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
}
|
|
rs.close();
|
|
|
|
// Note language agnostic tokenisation included in the default settings includes matches you may not expect
|
|
// Corss language search support
|
|
|
|
// d:mltext single
|
|
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextBoth = 'AAAA BBBB'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextBoth = 'AAAA'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextBoth = '%AAAA'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextBoth = '%AAA'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextBoth = 'BBBB'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextBoth = 'CCCC DDDD'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextBoth <> 'EEEE FFFF'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextBoth LIKE 'AAA_ B%'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextBoth LIKE 'CCC_ D%'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextBoth NOT LIKE 'B%'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextBoth NOT LIKE 'D%'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextBoth IN ('AAAA BBBB', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextBoth IN ('CCCC DDDD', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextBoth NOT IN ('EEEE FFFF')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE 'AAAA BBBB' = ANY test:singleMLTextBoth ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE 'CCCC DDDD' = ANY test:singleMLTextBoth ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:singleMLTextBoth IN ('AAAA BBBB', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:singleMLTextBoth IN ('CCCC DDDD', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:singleMLTextBoth NOT IN ('EEEE FFFF')", 1, false, "cmis:name", new String(), true);
|
|
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextUntokenised = 'AAAA BBBB'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextUntokenised = 'CCCC DDDD'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextUntokenised <> 'EEEE FFFF'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextUntokenised LIKE 'AAA_ B%'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextUntokenised LIKE 'CCC_ D%'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextUntokenised NOT LIKE 'B%'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextUntokenised NOT LIKE 'D%'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextUntokenised IN ('AAAA BBBB', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextUntokenised IN ('CCCC DDDD', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextUntokenised NOT IN ('EEEE FFFF')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE 'AAAA BBBB' = ANY test:singleMLTextUntokenised ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE 'CCCC DDDD' = ANY test:singleMLTextUntokenised ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:singleMLTextUntokenised IN ('AAAA BBBB', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:singleMLTextUntokenised IN ('CCCC DDDD', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:singleMLTextUntokenised NOT IN ('EEEE FFFF')", 1, false, "cmis:name", new String(), true);
|
|
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextTokenised = 'AAAA'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextTokenised = 'BBBB'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextTokenised = 'CCCC'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextTokenised = 'DDDD'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextTokenised <> 'EEEE'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextTokenised LIKE 'A%'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextTokenised LIKE '_B__'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextTokenised LIKE '%C'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextTokenised LIKE 'D%D'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextTokenised NOT LIKE 'CCCC_'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextTokenised IN ('AAAA', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextTokenised IN ('BBBB', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextTokenised IN ('CCCC', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextTokenised IN ('DDDD', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleMLTextTokenised NOT IN ('EEEE')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE 'AAAA' = ANY test:singleMLTextTokenised ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE 'BBBB' = ANY test:singleMLTextTokenised ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE 'CCCC' = ANY test:singleMLTextTokenised ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE 'DDDD' = ANY test:singleMLTextTokenised ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:singleMLTextTokenised IN ('AAAA', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:singleMLTextTokenised IN ('BBBB', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:singleMLTextTokenised IN ('CCCC', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:singleMLTextTokenised IN ('DDDD', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:singleMLTextTokenised NOT IN ('EEEE')", 1, false, "cmis:name", new String(), true);
|
|
|
|
// d:mltext single by alias
|
|
|
|
testQuery("SELECT test:singleMLTextBoth as alias FROM test:extendedContent WHERE alias = 'AAAA BBBB'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextBoth as alias FROM test:extendedContent WHERE alias = 'AAAA'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextBoth as alias FROM test:extendedContent WHERE alias = 'BBBB'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextBoth as alias FROM test:extendedContent WHERE alias = 'CCCC DDDD'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextBoth as alias FROM test:extendedContent WHERE alias <> 'EEEE FFFF'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextBoth as alias FROM test:extendedContent WHERE alias LIKE 'AAA_ B%'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextBoth as alias FROM test:extendedContent WHERE alias LIKE 'CCC_ D%'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextBoth as alias FROM test:extendedContent WHERE alias NOT LIKE 'B%'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextBoth as alias FROM test:extendedContent WHERE alias NOT LIKE 'D%'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextBoth as alias FROM test:extendedContent WHERE alias IN ('AAAA BBBB', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextBoth as alias FROM test:extendedContent WHERE alias IN ('CCCC DDDD', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextBoth as alias FROM test:extendedContent WHERE alias NOT IN ('EEEE FFFF')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextBoth as alias FROM test:extendedContent WHERE 'AAAA BBBB' = ANY alias ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleMLTextBoth as alias FROM test:extendedContent WHERE 'CCCC DDDD' = ANY alias ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleMLTextBoth as alias FROM test:extendedContent WHERE ANY alias IN ('AAAA BBBB', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleMLTextBoth as alias FROM test:extendedContent WHERE ANY alias IN ('CCCC DDDD', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleMLTextBoth as alias FROM test:extendedContent WHERE ANY alias NOT IN ('EEEE FFFF')", 1, false, "cmis:name", new String(), true);
|
|
|
|
testQuery("SELECT test:singleMLTextUntokenised as alias FROM test:extendedContent WHERE alias = 'AAAA BBBB'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextUntokenised as alias FROM test:extendedContent WHERE alias = 'CCCC DDDD'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextUntokenised as alias FROM test:extendedContent WHERE alias <> 'EEEE FFFF'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextUntokenised as alias FROM test:extendedContent WHERE alias LIKE 'AAA_ B%'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextUntokenised as alias FROM test:extendedContent WHERE alias LIKE 'CCC_ D%'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextUntokenised as alias FROM test:extendedContent WHERE alias NOT LIKE 'B%'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextUntokenised as alias FROM test:extendedContent WHERE alias NOT LIKE 'D%'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextUntokenised as alias FROM test:extendedContent WHERE alias IN ('AAAA BBBB', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextUntokenised as alias FROM test:extendedContent WHERE alias IN ('CCCC DDDD', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextUntokenised as alias FROM test:extendedContent WHERE alias NOT IN ('EEEE FFFF')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextUntokenised as alias FROM test:extendedContent WHERE 'AAAA BBBB' = ANY alias ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleMLTextUntokenised as alias FROM test:extendedContent WHERE 'CCCC DDDD' = ANY alias ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleMLTextUntokenised as alias FROM test:extendedContent WHERE ANY alias IN ('AAAA BBBB', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleMLTextUntokenised as alias FROM test:extendedContent WHERE ANY alias IN ('CCCC DDDD', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleMLTextUntokenised as alias FROM test:extendedContent WHERE ANY alias NOT IN ('EEEE FFFF')", 1, false, "cmis:name", new String(), true);
|
|
|
|
testQuery("SELECT test:singleMLTextTokenised as alias FROM test:extendedContent WHERE alias = 'AAAA'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextTokenised as alias FROM test:extendedContent WHERE alias = 'BBBB'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextTokenised as alias FROM test:extendedContent WHERE alias = 'CCCC'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextTokenised as alias FROM test:extendedContent WHERE alias = 'DDDD'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextTokenised as alias FROM test:extendedContent WHERE alias <> 'EEEE'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextTokenised as alias FROM test:extendedContent WHERE alias LIKE 'A%'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextTokenised as alias FROM test:extendedContent WHERE alias LIKE '_B__'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextTokenised as alias FROM test:extendedContent WHERE alias LIKE '%C'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextTokenised as alias FROM test:extendedContent WHERE alias LIKE 'D%D'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextTokenised as alias FROM test:extendedContent WHERE alias NOT LIKE 'CCCC_'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextTokenised as alias FROM test:extendedContent WHERE alias IN ('AAAA', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextTokenised as alias FROM test:extendedContent WHERE alias IN ('BBBB', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextTokenised as alias FROM test:extendedContent WHERE alias IN ('CCCC', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextTokenised as alias FROM test:extendedContent WHERE alias IN ('DDDD', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextTokenised as alias FROM test:extendedContent WHERE alias NOT IN ('EEEE')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleMLTextTokenised as alias FROM test:extendedContent WHERE 'AAAA' = ANY alias ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleMLTextTokenised as alias FROM test:extendedContent WHERE 'BBBB' = ANY alias ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleMLTextTokenised as alias FROM test:extendedContent WHERE 'CCCC' = ANY alias ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleMLTextTokenised as alias FROM test:extendedContent WHERE 'DDDD' = ANY alias ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleMLTextTokenised as alias FROM test:extendedContent WHERE ANY alias IN ('AAAA', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleMLTextTokenised as alias FROM test:extendedContent WHERE ANY alias IN ('BBBB', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleMLTextTokenised as alias FROM test:extendedContent WHERE ANY alias IN ('CCCC', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleMLTextTokenised as alias FROM test:extendedContent WHERE ANY alias IN ('DDDD', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleMLTextTokenised as alias FROM test:extendedContent WHERE ANY alias NOT IN ('EEEE')", 1, false, "cmis:name", new String(), true);
|
|
|
|
// d:mltext multiple
|
|
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextBoth = 'AAAA BBBB'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextBoth = 'AAAA'", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextBoth = 'BBBB'", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextBoth = 'CCCC DDDD'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextBoth <> 'EEEE FFFF'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextBoth LIKE 'AAA_ B%'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextBoth LIKE 'CCC_ D%'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextBoth NOT LIKE 'B%'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextBoth NOT LIKE 'D%'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextBoth IN ('AAAA BBBB', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextBoth IN ('CCCC DDDD', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextBoth NOT IN ('EEEE FFFF')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE 'AAAA BBBB' = ANY test:multipleMLTextBoth ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE 'CCCC DDDD' = ANY test:multipleMLTextBoth ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleMLTextBoth IN ('AAAA BBBB', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleMLTextBoth IN ('CCCC DDDD', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleMLTextBoth NOT IN ('EEEE FFFF')", 1, false, "cmis:name", new String(), false);
|
|
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextUntokenised = 'AAAA BBBB'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextUntokenised = 'CCCC DDDD'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextUntokenised <> 'EEEE FFFF'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextUntokenised LIKE 'AAA_ B%'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextUntokenised LIKE 'CCC_ D%'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextUntokenised NOT LIKE 'B%'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextUntokenised NOT LIKE 'D%'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextUntokenised IN ('AAAA BBBB', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextUntokenised IN ('CCCC DDDD', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextUntokenised NOT IN ('EEEE FFFF')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE 'AAAA BBBB' = ANY test:multipleMLTextUntokenised ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE 'CCCC DDDD' = ANY test:multipleMLTextUntokenised ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleMLTextUntokenised IN ('AAAA BBBB', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleMLTextUntokenised IN ('CCCC DDDD', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleMLTextUntokenised NOT IN ('EEEE FFFF')", 1, false, "cmis:name", new String(), false);
|
|
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextTokenised = 'AAAA'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextTokenised = 'BBBB'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextTokenised = 'CCCC'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextTokenised = 'DDDD'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextTokenised <> 'EEEE'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextTokenised LIKE 'A%'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextTokenised LIKE '_B__'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextTokenised LIKE '%C'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextTokenised LIKE 'D%D'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextTokenised NOT LIKE 'CCCC_'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextTokenised IN ('AAAA', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextTokenised IN ('BBBB', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextTokenised IN ('CCCC', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextTokenised IN ('DDDD', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleMLTextTokenised NOT IN ('EEEE')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE 'AAAA' = ANY test:multipleMLTextTokenised ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE 'BBBB' = ANY test:multipleMLTextTokenised ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE 'CCCC' = ANY test:multipleMLTextTokenised ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE 'DDDD' = ANY test:multipleMLTextTokenised ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleMLTextTokenised IN ('AAAA', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleMLTextTokenised IN ('BBBB', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleMLTextTokenised IN ('CCCC', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleMLTextTokenised IN ('DDDD', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleMLTextTokenised NOT IN ('EEEE')", 1, false, "cmis:name", new String(), false);
|
|
|
|
// d:mltext multiple by alias
|
|
|
|
testQuery("SELECT test:multipleMLTextBoth alias FROM test:extendedContent WHERE alias = 'AAAA BBBB'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextBoth alias FROM test:extendedContent WHERE alias = 'AAAA'", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextBoth alias FROM test:extendedContent WHERE alias = 'BBBB'", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextBoth alias FROM test:extendedContent WHERE alias = 'CCCC DDDD'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextBoth alias FROM test:extendedContent WHERE alias <> 'EEEE FFFF'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextBoth alias FROM test:extendedContent WHERE alias LIKE 'AAA_ B%'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextBoth alias FROM test:extendedContent WHERE alias LIKE 'CCC_ D%'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextBoth alias FROM test:extendedContent WHERE alias NOT LIKE 'B%'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextBoth alias FROM test:extendedContent WHERE alias NOT LIKE 'D%'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextBoth alias FROM test:extendedContent WHERE alias IN ('AAAA BBBB', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextBoth alias FROM test:extendedContent WHERE alias IN ('CCCC DDDD', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextBoth alias FROM test:extendedContent WHERE alias NOT IN ('EEEE FFFF')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextBoth alias FROM test:extendedContent WHERE 'AAAA BBBB' = ANY alias ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleMLTextBoth alias FROM test:extendedContent WHERE 'CCCC DDDD' = ANY alias ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleMLTextBoth alias FROM test:extendedContent WHERE ANY alias IN ('AAAA BBBB', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleMLTextBoth alias FROM test:extendedContent WHERE ANY alias IN ('CCCC DDDD', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleMLTextBoth alias FROM test:extendedContent WHERE ANY alias NOT IN ('EEEE FFFF')", 1, false, "cmis:name", new String(), false);
|
|
|
|
testQuery("SELECT test:multipleMLTextUntokenised alias FROM test:extendedContent WHERE alias = 'AAAA BBBB'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextUntokenised alias FROM test:extendedContent WHERE alias = 'CCCC DDDD'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextUntokenised alias FROM test:extendedContent WHERE alias <> 'EEEE FFFF'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextUntokenised alias FROM test:extendedContent WHERE alias LIKE 'AAA_ B%'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextUntokenised alias FROM test:extendedContent WHERE alias LIKE 'CCC_ D%'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextUntokenised alias FROM test:extendedContent WHERE alias NOT LIKE 'B%'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextUntokenised alias FROM test:extendedContent WHERE alias NOT LIKE 'D%'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextUntokenised alias FROM test:extendedContent WHERE alias IN ('AAAA BBBB', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextUntokenised alias FROM test:extendedContent WHERE alias IN ('CCCC DDDD', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextUntokenised alias FROM test:extendedContent WHERE alias NOT IN ('EEEE FFFF')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextUntokenised alias FROM test:extendedContent WHERE 'AAAA BBBB' = ANY alias ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleMLTextUntokenised alias FROM test:extendedContent WHERE 'CCCC DDDD' = ANY alias ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleMLTextUntokenised alias FROM test:extendedContent WHERE ANY alias IN ('AAAA BBBB', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleMLTextUntokenised alias FROM test:extendedContent WHERE ANY alias IN ('CCCC DDDD', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleMLTextUntokenised alias FROM test:extendedContent WHERE ANY alias NOT IN ('EEEE FFFF')", 1, false, "cmis:name", new String(), false);
|
|
|
|
testQuery("SELECT test:multipleMLTextTokenised alias FROM test:extendedContent WHERE alias = 'AAAA'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextTokenised alias FROM test:extendedContent WHERE alias = 'BBBB'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextTokenised alias FROM test:extendedContent WHERE alias = 'CCCC'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextTokenised alias FROM test:extendedContent WHERE alias = 'DDDD'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextTokenised alias FROM test:extendedContent WHERE alias <> 'EEEE'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextTokenised alias FROM test:extendedContent WHERE alias LIKE 'A%'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextTokenised alias FROM test:extendedContent WHERE alias LIKE '_B__'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextTokenised alias FROM test:extendedContent WHERE alias LIKE '%C'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextTokenised alias FROM test:extendedContent WHERE alias LIKE 'D%D'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextTokenised alias FROM test:extendedContent WHERE alias NOT LIKE 'CCCC_'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextTokenised alias FROM test:extendedContent WHERE alias IN ('AAAA', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextTokenised alias FROM test:extendedContent WHERE alias IN ('BBBB', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextTokenised alias FROM test:extendedContent WHERE alias IN ('CCCC', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextTokenised alias FROM test:extendedContent WHERE alias IN ('DDDD', 'Monkey')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextTokenised alias FROM test:extendedContent WHERE alias NOT IN ('EEEE')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleMLTextTokenised alias FROM test:extendedContent WHERE 'AAAA' = ANY alias ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleMLTextTokenised alias FROM test:extendedContent WHERE 'BBBB' = ANY alias ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleMLTextTokenised alias FROM test:extendedContent WHERE 'CCCC' = ANY alias ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleMLTextTokenised alias FROM test:extendedContent WHERE 'DDDD' = ANY alias ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleMLTextTokenised alias FROM test:extendedContent WHERE ANY alias IN ('AAAA', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleMLTextTokenised alias FROM test:extendedContent WHERE ANY alias IN ('BBBB', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleMLTextTokenised alias FROM test:extendedContent WHERE ANY alias IN ('CCCC', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleMLTextTokenised alias FROM test:extendedContent WHERE ANY alias IN ('DDDD', 'Monkey')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleMLTextTokenised alias FROM test:extendedContent WHERE ANY alias NOT IN ('EEEE')", 1, false, "cmis:name", new String(), false);
|
|
}
|
|
|
|
public void test_d_float() throws Exception
|
|
{
|
|
addTypeTestData();
|
|
assertNotNull(dictionaryService.getType(extendedContent));
|
|
assertNotNull(cmisDictionaryService.findTypeByQueryName("test:extendedContent"));
|
|
|
|
testQuery("SELECT * FROM test:extendedContent", 1, false, "cmis:name", new String(), false);
|
|
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM test:extendedContent", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(1, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("test:singleFloat");
|
|
Float value = DefaultTypeConverter.INSTANCE.convert(Float.class, sValue);
|
|
assertEquals(1.0f, value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("test:singleFloat");
|
|
assertEquals(PropertyType.DECIMAL, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
|
|
sValue = row.getValue("test:multipleFloat");
|
|
assert (sValue instanceof Collection<?>);
|
|
Collection<Float> collection = DefaultTypeConverter.INSTANCE.getCollection(Float.class, sValue);
|
|
assertEquals(2, collection.size());
|
|
Float[] members = new Float[2];
|
|
members = collection.toArray(members);
|
|
assertEquals(1.0f, members[0]);
|
|
assertEquals(1.1f, members[1]);
|
|
column = rs.getResultSetMetaData().getColumn("test:multipleFloat");
|
|
assertEquals(PropertyType.DECIMAL, column.getCMISDataType());
|
|
assertEquals(Cardinality.MULTI, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
}
|
|
rs.close();
|
|
|
|
// d:float single
|
|
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleFloat = 1", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleFloat = 1.1", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleFloat <> 1", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleFloat <> 1.1", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleFloat < 1", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleFloat < 1.1", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleFloat <= 1", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleFloat <= 1.1", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleFloat > 1", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleFloat > 0.9", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleFloat >= 1", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleFloat >= 0.9", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleFloat LIKE '1'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleFloat NOT LIKE '2'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleFloat IN (1, 2)", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleFloat NOT IN (1.1)", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE '1' = ANY test:singleFloat ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE '1.1' = ANY test:singleFloat ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:singleFloat IN (1, 2)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:singleFloat NOT IN (1.1, 2.2)", 1, false, "cmis:name", new String(), true);
|
|
|
|
// d:float single by alias
|
|
|
|
testQuery("SELECT test:singleFloat as alias FROM test:extendedContent WHERE alias = 1", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleFloat as alias FROM test:extendedContent WHERE alias = 1.1", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleFloat as alias FROM test:extendedContent WHERE alias <> 1", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleFloat as alias FROM test:extendedContent WHERE alias <> 1.1", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleFloat as alias FROM test:extendedContent WHERE alias < 1", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleFloat as alias FROM test:extendedContent WHERE alias < 1.1", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleFloat as alias FROM test:extendedContent WHERE alias <= 1", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleFloat as alias FROM test:extendedContent WHERE alias <= 1.1", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleFloat as alias FROM test:extendedContent WHERE alias > 1", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleFloat as alias FROM test:extendedContent WHERE alias > 0.9", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleFloat as alias FROM test:extendedContent WHERE alias >= 1", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleFloat as alias FROM test:extendedContent WHERE alias >= 0.9", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleFloat as alias FROM test:extendedContent WHERE alias LIKE '1'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleFloat as alias FROM test:extendedContent WHERE alias NOT LIKE '2'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleFloat as alias FROM test:extendedContent WHERE alias IN (1, 2)", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleFloat as alias FROM test:extendedContent WHERE alias NOT IN (1.1)", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleFloat as alias FROM test:extendedContent WHERE '1' = ANY alias ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleFloat as alias FROM test:extendedContent WHERE '1.1' = ANY alias ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleFloat as alias FROM test:extendedContent WHERE ANY alias IN (1, 2)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleFloat as alias FROM test:extendedContent WHERE ANY alias NOT IN (1.1, 2.2)", 1, false, "cmis:name", new String(), true);
|
|
|
|
// d:float multiple
|
|
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleFloat = 1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleFloat = 1.1", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleFloat <> 1", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleFloat <> 1.1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleFloat < 1", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleFloat < 1.1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleFloat <= 1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleFloat <= 1.1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleFloat > 1", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleFloat > 0.9", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleFloat >= 1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleFloat >= 0.9", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleFloat LIKE '1'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleFloat NOT LIKE '2'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleFloat IN (1, 2)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleFloat NOT IN (1.1)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE '1' = ANY test:multipleFloat ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE '1.1' = ANY test:multipleFloat ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleFloat IN (1, 2)", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleFloat IN (1.1, 2.2)", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleFloat NOT IN (1.1, 2.2)", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleFloat NOT IN (1.3, 2.3)", 1, false, "cmis:name", new String(), false);
|
|
|
|
// d:float multiple by alias
|
|
|
|
testQuery("SELECT test:multipleFloat as alias FROM test:extendedContent WHERE alias = 1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleFloat as alias FROM test:extendedContent WHERE alias = 1.1", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleFloat as alias FROM test:extendedContent WHERE alias <> 1", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleFloat as alias FROM test:extendedContent WHERE alias <> 1.1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleFloat as alias FROM test:extendedContent WHERE alias < 1", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleFloat as alias FROM test:extendedContent WHERE alias < 1.1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleFloat as alias FROM test:extendedContent WHERE alias <= 1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleFloat as alias FROM test:extendedContent WHERE alias <= 1.1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleFloat as alias FROM test:extendedContent WHERE alias > 1", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleFloat as alias FROM test:extendedContent WHERE alias > 0.9", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleFloat as alias FROM test:extendedContent WHERE alias >= 1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleFloat as alias FROM test:extendedContent WHERE alias >= 0.9", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleFloat as alias FROM test:extendedContent WHERE alias LIKE '1'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleFloat as alias FROM test:extendedContent WHERE alias NOT LIKE '2'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleFloat as alias FROM test:extendedContent WHERE alias IN (1, 2)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleFloat as alias FROM test:extendedContent WHERE alias NOT IN (1.1)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleFloat as alias FROM test:extendedContent WHERE '1' = ANY alias ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleFloat as alias FROM test:extendedContent WHERE '1.1' = ANY alias ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleFloat as alias FROM test:extendedContent WHERE ANY alias IN (1, 2)", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleFloat as alias FROM test:extendedContent WHERE ANY alias IN (1.1, 2.2)", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleFloat as alias FROM test:extendedContent WHERE ANY alias NOT IN (1.1, 2.2)", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleFloat as alias FROM test:extendedContent WHERE ANY alias NOT IN (1.3, 2.3)", 1, false, "cmis:name", new String(), false);
|
|
}
|
|
|
|
public void test_d_double() throws Exception
|
|
{
|
|
addTypeTestData();
|
|
assertNotNull(dictionaryService.getType(extendedContent));
|
|
assertNotNull(cmisDictionaryService.findTypeByQueryName("test:extendedContent"));
|
|
|
|
testQuery("SELECT * FROM test:extendedContent", 1, false, "cmis:name", new String(), false);
|
|
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM test:extendedContent", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(1, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("test:singleDouble");
|
|
Double value = DefaultTypeConverter.INSTANCE.convert(Double.class, sValue);
|
|
assertEquals(1.0d, value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("test:singleDouble");
|
|
assertEquals(PropertyType.DECIMAL, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
|
|
sValue = row.getValue("test:multipleDouble");
|
|
assert (sValue instanceof Collection<?>);
|
|
Collection<Double> collection = DefaultTypeConverter.INSTANCE.getCollection(Double.class, sValue);
|
|
assertEquals(2, collection.size());
|
|
Double[] members = new Double[2];
|
|
members = collection.toArray(members);
|
|
assertEquals(1.0d, members[0]);
|
|
assertEquals(1.1d, members[1]);
|
|
column = rs.getResultSetMetaData().getColumn("test:multipleDouble");
|
|
assertEquals(PropertyType.DECIMAL, column.getCMISDataType());
|
|
assertEquals(Cardinality.MULTI, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
}
|
|
rs.close();
|
|
|
|
// d:double single
|
|
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDouble = 1", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDouble = 1.1", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDouble <> 1", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDouble <> 1.1", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDouble < 1", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDouble < 1.1", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDouble <= 1", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDouble <= 1.1", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDouble > 1", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDouble > 0.9", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDouble >= 1", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDouble >= 0.9", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDouble LIKE '1'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDouble NOT LIKE '2'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDouble IN (1, 2)", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDouble NOT IN (1.1)", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE '1' = ANY test:singleDouble ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE '1.1' = ANY test:singleDouble ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:singleDouble IN (1, 2)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:singleDouble NOT IN (1.1, 2.2)", 1, false, "cmis:name", new String(), true);
|
|
|
|
// d:double single by alias
|
|
|
|
testQuery("SELECT test:singleDouble alias FROM test:extendedContent WHERE alias = 1", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDouble alias FROM test:extendedContent WHERE alias = 1.1", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDouble alias FROM test:extendedContent WHERE alias <> 1", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDouble alias FROM test:extendedContent WHERE alias <> 1.1", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDouble alias FROM test:extendedContent WHERE alias < 1", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDouble alias FROM test:extendedContent WHERE alias < 1.1", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDouble alias FROM test:extendedContent WHERE alias <= 1", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDouble alias FROM test:extendedContent WHERE alias <= 1.1", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDouble alias FROM test:extendedContent WHERE alias > 1", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDouble alias FROM test:extendedContent WHERE alias > 0.9", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDouble alias FROM test:extendedContent WHERE alias >= 1", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDouble alias FROM test:extendedContent WHERE alias >= 0.9", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDouble alias FROM test:extendedContent WHERE alias LIKE '1'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleDouble alias FROM test:extendedContent WHERE alias NOT LIKE '2'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleDouble alias FROM test:extendedContent WHERE alias IN (1, 2)", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDouble alias FROM test:extendedContent WHERE alias NOT IN (1.1)", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDouble alias FROM test:extendedContent WHERE '1' = ANY alias ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleDouble alias FROM test:extendedContent WHERE '1.1' = ANY alias ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleDouble alias FROM test:extendedContent WHERE ANY alias IN (1, 2)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleDouble alias FROM test:extendedContent WHERE ANY alias NOT IN (1.1, 2.2)", 1, false, "cmis:name", new String(), true);
|
|
|
|
// d:double multiple
|
|
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDouble = 1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDouble = 1.1", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDouble <> 1", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDouble <> 1.1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDouble < 1", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDouble < 1.1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDouble <= 1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDouble <= 1.1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDouble > 1", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDouble > 0.9", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDouble >= 1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDouble >= 0.9", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDouble LIKE '1'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDouble NOT LIKE '2'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDouble IN (1, 2)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDouble NOT IN (1.1)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE '1' = ANY test:multipleDouble ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE '1.1' = ANY test:multipleDouble ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleDouble IN (1, 2)", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleDouble IN (1.1, 2.2)", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleDouble NOT IN (1.1, 2.2)", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleDouble NOT IN (1.3, 2.3)", 1, false, "cmis:name", new String(), false);
|
|
|
|
// d:double multiple by alias
|
|
|
|
testQuery("SELECT test:multipleDouble alias FROM test:extendedContent WHERE alias = 1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDouble alias FROM test:extendedContent WHERE alias = 1.1", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDouble alias FROM test:extendedContent WHERE alias <> 1", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDouble alias FROM test:extendedContent WHERE alias <> 1.1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDouble alias FROM test:extendedContent WHERE alias < 1", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDouble alias FROM test:extendedContent WHERE alias < 1.1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDouble alias FROM test:extendedContent WHERE alias <= 1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDouble alias FROM test:extendedContent WHERE alias <= 1.1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDouble alias FROM test:extendedContent WHERE alias > 1", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDouble alias FROM test:extendedContent WHERE alias > 0.9", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDouble alias FROM test:extendedContent WHERE alias >= 1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDouble alias FROM test:extendedContent WHERE alias >= 0.9", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDouble alias FROM test:extendedContent WHERE alias LIKE '1'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDouble alias FROM test:extendedContent WHERE alias NOT LIKE '2'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDouble alias FROM test:extendedContent WHERE alias IN (1, 2)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDouble alias FROM test:extendedContent WHERE alias NOT IN (1.1)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDouble alias FROM test:extendedContent WHERE '1' = ANY alias ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleDouble alias FROM test:extendedContent WHERE '1.1' = ANY alias ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleDouble alias FROM test:extendedContent WHERE ANY alias IN (1, 2)", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleDouble alias FROM test:extendedContent WHERE ANY alias IN (1.1, 2.2)", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleDouble alias FROM test:extendedContent WHERE ANY alias NOT IN (1.1, 2.2)", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleDouble alias FROM test:extendedContent WHERE ANY alias NOT IN (1.3, 2.3)", 1, false, "cmis:name", new String(), false);
|
|
}
|
|
|
|
public void test_d_int() throws Exception
|
|
{
|
|
addTypeTestData();
|
|
assertNotNull(dictionaryService.getType(extendedContent));
|
|
assertNotNull(cmisDictionaryService.findTypeByQueryName("test:extendedContent"));
|
|
|
|
testQuery("SELECT * FROM test:extendedContent", 1, false, "cmis:name", new String(), false);
|
|
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM test:extendedContent", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(1, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("test:singleInteger");
|
|
Integer value = DefaultTypeConverter.INSTANCE.convert(Integer.class, sValue);
|
|
assertEquals(Integer.valueOf(1), value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("test:singleInteger");
|
|
assertEquals(PropertyType.INTEGER, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
|
|
sValue = row.getValue("test:multipleInteger");
|
|
assert (sValue instanceof Collection<?>);
|
|
Collection<Integer> collection = DefaultTypeConverter.INSTANCE.getCollection(Integer.class, sValue);
|
|
assertEquals(2, collection.size());
|
|
Integer[] members = new Integer[2];
|
|
members = collection.toArray(members);
|
|
assertEquals(Integer.valueOf(1), members[0]);
|
|
assertEquals(Integer.valueOf(2), members[1]);
|
|
column = rs.getResultSetMetaData().getColumn("test:multipleInteger");
|
|
assertEquals(PropertyType.INTEGER, column.getCMISDataType());
|
|
assertEquals(Cardinality.MULTI, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
}
|
|
rs.close();
|
|
|
|
// d:int single
|
|
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleInteger = 1", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleInteger = 2", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleInteger <> 1", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleInteger <> 2", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleInteger < 1", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleInteger < 2", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleInteger <= 1", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleInteger <= 2", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleInteger > 1", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleInteger > 0", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleInteger >= 1", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleInteger >= 0", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleInteger LIKE '1'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleInteger NOT LIKE '2'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleInteger IN (1, 2)", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleInteger NOT IN (2)", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE '1' = ANY test:singleInteger ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE '2' = ANY test:singleInteger ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:singleInteger IN (1, 2)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:singleInteger NOT IN (2, 3)", 1, false, "cmis:name", new String(), true);
|
|
|
|
// d:int single by alias
|
|
|
|
testQuery("SELECT test:singleInteger alias FROM test:extendedContent WHERE alias = 1", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleInteger alias FROM test:extendedContent WHERE alias = 2", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleInteger alias FROM test:extendedContent WHERE alias <> 1", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleInteger alias FROM test:extendedContent WHERE alias <> 2", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleInteger alias FROM test:extendedContent WHERE alias < 1", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleInteger alias FROM test:extendedContent WHERE alias < 2", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleInteger alias FROM test:extendedContent WHERE alias <= 1", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleInteger alias FROM test:extendedContent WHERE alias <= 2", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleInteger alias FROM test:extendedContent WHERE alias > 1", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleInteger alias FROM test:extendedContent WHERE alias > 0", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleInteger alias FROM test:extendedContent WHERE alias >= 1", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleInteger alias FROM test:extendedContent WHERE alias >= 0", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleInteger alias FROM test:extendedContent WHERE alias LIKE '1'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleInteger alias FROM test:extendedContent WHERE alias NOT LIKE '2'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleInteger alias FROM test:extendedContent WHERE alias IN (1, 2)", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleInteger alias FROM test:extendedContent WHERE alias NOT IN (2)", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleInteger alias FROM test:extendedContent WHERE '1' = ANY alias ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleInteger alias FROM test:extendedContent WHERE '2' = ANY alias ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleInteger alias FROM test:extendedContent WHERE ANY alias IN (1, 2)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleInteger alias FROM test:extendedContent WHERE ANY alias NOT IN (2, 3)", 1, false, "cmis:name", new String(), true);
|
|
|
|
// d:int multiple
|
|
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleInteger = 1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleInteger = 2", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleInteger <> 1", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleInteger <> 2", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleInteger < 1", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleInteger < 2", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleInteger <= 1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleInteger <= 2", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleInteger > 1", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleInteger > 0", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleInteger >= 1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleInteger >= 0", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleInteger LIKE '1'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleInteger NOT LIKE '2'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleInteger IN (1, 2)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleInteger NOT IN (2)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE '1' = ANY test:multipleInteger ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE '2' = ANY test:multipleInteger ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleInteger IN (1, 2)", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleInteger IN (2, 3)", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleInteger NOT IN (1, 2)", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleInteger NOT IN (2, 3)", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleInteger NOT IN (3, 4)", 1, false, "cmis:name", new String(), false);
|
|
|
|
// d:int multiple by alias
|
|
|
|
testQuery("SELECT test:multipleInteger as alias FROM test:extendedContent WHERE alias = 1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleInteger as alias FROM test:extendedContent WHERE alias = 2", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleInteger as alias FROM test:extendedContent WHERE alias <> 1", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleInteger as alias FROM test:extendedContent WHERE alias <> 2", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleInteger as alias FROM test:extendedContent WHERE alias < 1", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleInteger as alias FROM test:extendedContent WHERE alias < 2", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleInteger as alias FROM test:extendedContent WHERE alias <= 1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleInteger as alias FROM test:extendedContent WHERE alias <= 2", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleInteger as alias FROM test:extendedContent WHERE alias > 1", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleInteger as alias FROM test:extendedContent WHERE alias > 0", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleInteger as alias FROM test:extendedContent WHERE alias >= 1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleInteger as alias FROM test:extendedContent WHERE alias >= 0", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleInteger as alias FROM test:extendedContent WHERE alias LIKE '1'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleInteger as alias FROM test:extendedContent WHERE alias NOT LIKE '2'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleInteger as alias FROM test:extendedContent WHERE alias IN (1, 2)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleInteger as alias FROM test:extendedContent WHERE alias NOT IN (2)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleInteger as alias FROM test:extendedContent WHERE '1' = ANY alias ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleInteger as alias FROM test:extendedContent WHERE '2' = ANY alias ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleInteger as alias FROM test:extendedContent WHERE ANY alias IN (1, 2)", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleInteger as alias FROM test:extendedContent WHERE ANY alias IN (2, 3)", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleInteger as alias FROM test:extendedContent WHERE ANY alias NOT IN (1, 2)", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleInteger as alias FROM test:extendedContent WHERE ANY alias NOT IN (2, 3)", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleInteger as alias FROM test:extendedContent WHERE ANY alias NOT IN (3, 4)", 1, false, "cmis:name", new String(), false);
|
|
}
|
|
|
|
public void test_d_long() throws Exception
|
|
{
|
|
addTypeTestData();
|
|
assertNotNull(dictionaryService.getType(extendedContent));
|
|
assertNotNull(cmisDictionaryService.findTypeByQueryName("test:extendedContent"));
|
|
|
|
testQuery("SELECT * FROM test:extendedContent", 1, false, "cmis:name", new String(), false);
|
|
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM test:extendedContent", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(1, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("test:singleLong");
|
|
Long value = DefaultTypeConverter.INSTANCE.convert(Long.class, sValue);
|
|
assertEquals(Long.valueOf(1), value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("test:singleLong");
|
|
assertEquals(PropertyType.INTEGER, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
|
|
sValue = row.getValue("test:multipleLong");
|
|
assert (sValue instanceof Collection<?>);
|
|
Collection<Long> collection = DefaultTypeConverter.INSTANCE.getCollection(Long.class, sValue);
|
|
assertEquals(2, collection.size());
|
|
Long[] members = new Long[2];
|
|
members = collection.toArray(members);
|
|
assertEquals(Long.valueOf(1), members[0]);
|
|
assertEquals(Long.valueOf(2), members[1]);
|
|
column = rs.getResultSetMetaData().getColumn("test:multipleLong");
|
|
assertEquals(PropertyType.INTEGER, column.getCMISDataType());
|
|
assertEquals(Cardinality.MULTI, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
}
|
|
rs.close();
|
|
|
|
// d:long single
|
|
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleLong = 1", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleLong = 2", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleLong <> 1", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleLong <> 2", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleLong < 1", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleLong < 2", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleLong <= 1", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleLong <= 2", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleLong > 1", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleLong > 0", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleLong >= 1", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleLong >= 0", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleLong LIKE '1'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleLong NOT LIKE '2'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleLong IN (1, 2)", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleLong NOT IN (2)", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE '1' = ANY test:singleLong ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE '2' = ANY test:singleLong ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:singleLong IN (1, 2)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:singleLong NOT IN (2, 3)", 1, false, "cmis:name", new String(), true);
|
|
|
|
// d:long single by alias
|
|
|
|
testQuery("SELECT test:singleLong as alias FROM test:extendedContent WHERE alias = 1", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleLong as alias FROM test:extendedContent WHERE alias = 2", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleLong as alias FROM test:extendedContent WHERE alias <> 1", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleLong as alias FROM test:extendedContent WHERE alias <> 2", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleLong as alias FROM test:extendedContent WHERE alias < 1", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleLong as alias FROM test:extendedContent WHERE alias < 2", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleLong as alias FROM test:extendedContent WHERE alias <= 1", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleLong as alias FROM test:extendedContent WHERE alias <= 2", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleLong as alias FROM test:extendedContent WHERE alias > 1", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleLong as alias FROM test:extendedContent WHERE alias > 0", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleLong as alias FROM test:extendedContent WHERE alias >= 1", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleLong as alias FROM test:extendedContent WHERE alias >= 0", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleLong as alias FROM test:extendedContent WHERE alias LIKE '1'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleLong as alias FROM test:extendedContent WHERE alias NOT LIKE '2'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleLong as alias FROM test:extendedContent WHERE alias IN (1, 2)", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleLong as alias FROM test:extendedContent WHERE alias NOT IN (2)", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleLong as alias FROM test:extendedContent WHERE '1' = ANY alias ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleLong as alias FROM test:extendedContent WHERE '2' = ANY alias ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleLong as alias FROM test:extendedContent WHERE ANY alias IN (1, 2)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleLong as alias FROM test:extendedContent WHERE ANY alias NOT IN (2, 3)", 1, false, "cmis:name", new String(), true);
|
|
|
|
// d:long multiple
|
|
|
|
testQuery("SELECT alias FROM test:extendedContent WHERE test:multipleLong = 1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleLong = 2", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleLong <> 1", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleLong <> 2", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleLong < 1", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleLong < 2", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleLong <= 1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleLong <= 2", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleLong > 1", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleLong > 0", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleLong >= 1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleLong >= 0", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleLong LIKE '1'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleLong NOT LIKE '2'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleLong IN (1, 2)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleLong NOT IN (2)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE '1' = ANY test:multipleLong ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE '2' = ANY test:multipleLong ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleLong IN (1, 2)", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleLong IN (2, 3)", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleLong NOT IN (1, 2)", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleLong NOT IN (2, 3)", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleLong NOT IN (3, 4)", 1, false, "cmis:name", new String(), false);
|
|
|
|
// d:long multiple by alias
|
|
|
|
testQuery("SELECT test:multipleLong alias FROM test:extendedContent WHERE alias = 1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleLong alias FROM test:extendedContent WHERE alias = 2", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleLong alias FROM test:extendedContent WHERE alias <> 1", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleLong alias FROM test:extendedContent WHERE alias <> 2", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleLong alias FROM test:extendedContent WHERE alias < 1", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleLong alias FROM test:extendedContent WHERE alias < 2", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleLong alias FROM test:extendedContent WHERE alias <= 1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleLong alias FROM test:extendedContent WHERE alias <= 2", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleLong alias FROM test:extendedContent WHERE alias > 1", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleLong alias FROM test:extendedContent WHERE alias > 0", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleLong alias FROM test:extendedContent WHERE alias >= 1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleLong alias FROM test:extendedContent WHERE alias >= 0", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleLong alias FROM test:extendedContent WHERE alias LIKE '1'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleLong alias FROM test:extendedContent WHERE alias NOT LIKE '2'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleLong alias FROM test:extendedContent WHERE alias IN (1, 2)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleLong alias FROM test:extendedContent WHERE alias NOT IN (2)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleLong alias FROM test:extendedContent WHERE '1' = ANY alias ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleLong alias FROM test:extendedContent WHERE '2' = ANY alias ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleLong alias FROM test:extendedContent WHERE ANY alias IN (1, 2)", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleLong alias FROM test:extendedContent WHERE ANY alias IN (2, 3)", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleLong alias FROM test:extendedContent WHERE ANY alias NOT IN (1, 2)", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleLong alias FROM test:extendedContent WHERE ANY alias NOT IN (2, 3)", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleLong alias FROM test:extendedContent WHERE ANY alias NOT IN (3, 4)", 1, false, "cmis:name", new String(), false);
|
|
}
|
|
|
|
public void test_d_date() throws Exception
|
|
{
|
|
addTypeTestData();
|
|
assertNotNull(dictionaryService.getType(extendedContent));
|
|
assertNotNull(cmisDictionaryService.findTypeByQueryName("test:extendedContent"));
|
|
|
|
testQuery("SELECT * FROM test:extendedContent", 1, false, "cmis:name", new String(), false);
|
|
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM test:extendedContent", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(1, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("test:singleDate");
|
|
Date value = DefaultTypeConverter.INSTANCE.convert(Date.class, sValue);
|
|
assertEquals(date1, value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("test:singleDate");
|
|
assertEquals(PropertyType.DATETIME, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
|
|
sValue = row.getValue("test:multipleDate");
|
|
assert (sValue instanceof Collection<?>);
|
|
Collection<Date> collection = DefaultTypeConverter.INSTANCE.getCollection(Date.class, sValue);
|
|
assertEquals(2, collection.size());
|
|
Date[] members = new Date[2];
|
|
members = collection.toArray(members);
|
|
assertEquals(date1, members[0]);
|
|
assertEquals(date2, members[1]);
|
|
column = rs.getResultSetMetaData().getColumn("test:multipleDate");
|
|
assertEquals(PropertyType.DATETIME, column.getCMISDataType());
|
|
assertEquals(Cardinality.MULTI, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
}
|
|
rs.close();
|
|
|
|
// d:date single
|
|
|
|
SimpleDateFormat df1 = new SimpleDateFormat("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'SSSZ");
|
|
|
|
String d0 = df1.format(date0);
|
|
StringBuilder builder = new StringBuilder();
|
|
builder.append(d0);
|
|
builder.insert(builder.length() - 2, ':');
|
|
d0 = builder.toString();
|
|
|
|
String d1 = df1.format(date1);
|
|
builder = new StringBuilder();
|
|
builder.append(d1);
|
|
builder.insert(builder.length() - 2, ':');
|
|
d1 = builder.toString();
|
|
|
|
String d2 = df1.format(date2);
|
|
builder = new StringBuilder();
|
|
builder.append(d2);
|
|
builder.insert(builder.length() - 2, ':');
|
|
d2 = builder.toString();
|
|
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDate = TIMESTAMP '" + d1 + "'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDate = TIMESTAMP '" + d2 + "'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDate <> TIMESTAMP '" + d1 + "'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDate <> TIMESTAMP '" + d2 + "'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDate < TIMESTAMP '" + d1 + "'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDate < TIMESTAMP '" + d2 + "'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDate <= TIMESTAMP '" + d1 + "'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDate <= TIMESTAMP '" + d2 + "'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDate > TIMESTAMP '" + d1 + "'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDate > TIMESTAMP '" + d0 + "'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDate >= TIMESTAMP '" + d1 + "'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDate >= TIMESTAMP '" + d0 + "'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDate LIKE TIMESTAMP '" + d1 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDate NOT LIKE TIMESTAMP '" + d2 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDate IN (TIMESTAMP '" + d0 + "' ,TIMESTAMP '" + d1 + "')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDate NOT IN (TIMESTAMP '" + d2 + "')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE TIMESTAMP '" + d1 + "' = ANY test:singleDate ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE TIMESTAMP '" + d2 + "' = ANY test:singleDate ", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:singleDate IN (TIMESTAMP '" + d1 + "', TIMESTAMP '" + d2 + "')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:singleDate NOT IN (TIMESTAMP '" + d0 + "', TIMESTAMP '" + d2 + "')", 1, false, "cmis:name", new String(), true);
|
|
|
|
// d:date single by alias
|
|
|
|
testQuery("SELECT test:singleDate as alias FROM test:extendedContent WHERE alias = TIMESTAMP '" + d1 + "'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDate as alias FROM test:extendedContent WHERE alias = TIMESTAMP '" + d2 + "'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDate as alias FROM test:extendedContent WHERE alias <> TIMESTAMP '" + d1 + "'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDate as alias FROM test:extendedContent WHERE alias <> TIMESTAMP '" + d2 + "'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDate as alias FROM test:extendedContent WHERE alias < TIMESTAMP '" + d1 + "'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDate as alias FROM test:extendedContent WHERE alias < TIMESTAMP '" + d2 + "'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDate as alias FROM test:extendedContent WHERE alias <= TIMESTAMP '" + d1 + "'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDate as alias FROM test:extendedContent WHERE alias <= TIMESTAMP '" + d2 + "'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDate as alias FROM test:extendedContent WHERE alias > TIMESTAMP '" + d1 + "'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDate as alias FROM test:extendedContent WHERE alias > TIMESTAMP '" + d0 + "'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDate as alias FROM test:extendedContent WHERE alias >= TIMESTAMP '" + d1 + "'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDate as alias FROM test:extendedContent WHERE alias >= TIMESTAMP '" + d0 + "'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDate as alias FROM test:extendedContent WHERE alias LIKE TIMESTAMP '" + d1 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleDate as alias FROM test:extendedContent WHERE alias NOT LIKE TIMESTAMP '" + d2 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleDate as alias FROM test:extendedContent WHERE alias IN (TIMESTAMP '" + d0 + "' ,TIMESTAMP '" + d1 + "')", 1, false, "cmis:name", new String(),
|
|
false);
|
|
testQuery("SELECT test:singleDate as alias FROM test:extendedContent WHERE alias NOT IN (TIMESTAMP '" + d2 + "')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDate as alias FROM test:extendedContent WHERE TIMESTAMP '" + d1 + "' = ANY alias ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleDate as alias FROM test:extendedContent WHERE TIMESTAMP '" + d2 + "' = ANY alias ", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleDate as alias FROM test:extendedContent WHERE ANY alias IN (TIMESTAMP '" + d1 + "', TIMESTAMP '" + d2 + "')", 1, false, "cmis:name",
|
|
new String(), true);
|
|
testQuery("SELECT test:singleDate as alias FROM test:extendedContent WHERE ANY alias NOT IN (TIMESTAMP '" + d0 + "', TIMESTAMP '" + d2 + "')", 1, false, "cmis:name",
|
|
new String(), true);
|
|
|
|
// d:date multiple
|
|
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDate = TIMESTAMP '" + d1 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDate = TIMESTAMP '" + d2 + "'", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDate <> TIMESTAMP '" + d1 + "'", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDate <> TIMESTAMP '" + d2 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDate < TIMESTAMP '" + d1 + "'", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDate < TIMESTAMP '" + d2 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDate <= TIMESTAMP '" + d1 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDate <= TIMESTAMP '" + d2 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDate > TIMESTAMP '" + d1 + "'", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDate > TIMESTAMP '" + d0 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDate >= TIMESTAMP '" + d1 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDate >= TIMESTAMP '" + d0 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDate LIKE TIMESTAMP '" + d0 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDate NOT LIKE TIMESTAMP '" + d2 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDate IN (TIMESTAMP '" + d1 + "', TIMESTAMP '" + d2 + "')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDate NOT IN (TIMESTAMP '" + d1 + "')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE TIMESTAMP '" + d1 + "' = ANY test:multipleDate ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE TIMESTAMP '" + d2 + "' = ANY test:multipleDate ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleDate IN (TIMESTAMP '" + d1 + "', TIMESTAMP '" + d2 + "')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleDate IN (TIMESTAMP '" + d2 + "', TIMESTAMP '" + d0 + "')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleDate NOT IN (TIMESTAMP '" + d0 + "', TIMESTAMP '" + d1 + "')", 0, false, "cmis:name", new String(),
|
|
false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleDate NOT IN (TIMESTAMP '" + d1 + "', TIMESTAMP '" + d2 + "')", 0, false, "cmis:name", new String(),
|
|
false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleDate NOT IN (TIMESTAMP '" + d0 + "')", 1, false, "cmis:name", new String(), false);
|
|
|
|
// d:date multiple by alias
|
|
|
|
testQuery("SELECT test:multipleDate alias FROM test:extendedContent WHERE alias = TIMESTAMP '" + d1 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDate alias FROM test:extendedContent WHERE alias = TIMESTAMP '" + d2 + "'", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDate alias FROM test:extendedContent WHERE alias <> TIMESTAMP '" + d1 + "'", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDate alias FROM test:extendedContent WHERE alias <> TIMESTAMP '" + d2 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDate alias FROM test:extendedContent WHERE alias < TIMESTAMP '" + d1 + "'", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDate alias FROM test:extendedContent WHERE alias < TIMESTAMP '" + d2 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDate alias FROM test:extendedContent WHERE alias <= TIMESTAMP '" + d1 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDate alias FROM test:extendedContent WHERE alias <= TIMESTAMP '" + d2 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDate alias FROM test:extendedContent WHERE alias > TIMESTAMP '" + d1 + "'", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDate alias FROM test:extendedContent WHERE alias > TIMESTAMP '" + d0 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDate alias FROM test:extendedContent WHERE alias >= TIMESTAMP '" + d1 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDate alias FROM test:extendedContent WHERE alias >= TIMESTAMP '" + d0 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDate alias FROM test:extendedContent WHERE alias LIKE TIMESTAMP '" + d0 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDate alias FROM test:extendedContent WHERE alias NOT LIKE TIMESTAMP '" + d2 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDate alias FROM test:extendedContent WHERE alias IN (TIMESTAMP '" + d1 + "', TIMESTAMP '" + d2 + "')", 1, false, "cmis:name", new String(),
|
|
true);
|
|
testQuery("SELECT test:multipleDate alias FROM test:extendedContent WHERE alias NOT IN (TIMESTAMP '" + d1 + "')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDate alias FROM test:extendedContent WHERE TIMESTAMP '" + d1 + "' = ANY alias ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleDate alias FROM test:extendedContent WHERE TIMESTAMP '" + d2 + "' = ANY alias ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleDate alias FROM test:extendedContent WHERE ANY alias IN (TIMESTAMP '" + d1 + "', TIMESTAMP '" + d2 + "')", 1, false, "cmis:name",
|
|
new String(), false);
|
|
testQuery("SELECT test:multipleDate alias FROM test:extendedContent WHERE ANY alias IN (TIMESTAMP '" + d2 + "', TIMESTAMP '" + d0 + "')", 1, false, "cmis:name",
|
|
new String(), false);
|
|
testQuery("SELECT test:multipleDate alias FROM test:extendedContent WHERE ANY alias NOT IN (TIMESTAMP '" + d0 + "', TIMESTAMP '" + d1 + "')", 0, false, "cmis:name",
|
|
new String(), false);
|
|
testQuery("SELECT test:multipleDate alias FROM test:extendedContent WHERE ANY alias NOT IN (TIMESTAMP '" + d1 + "', TIMESTAMP '" + d2 + "')", 0, false, "cmis:name",
|
|
new String(), false);
|
|
testQuery("SELECT test:multipleDate alias FROM test:extendedContent WHERE ANY alias NOT IN (TIMESTAMP '" + d0 + "')", 1, false, "cmis:name", new String(), false);
|
|
|
|
}
|
|
|
|
public void test_d_datetime() throws Exception
|
|
{
|
|
addTypeTestData();
|
|
assertNotNull(dictionaryService.getType(extendedContent));
|
|
assertNotNull(cmisDictionaryService.findTypeByQueryName("test:extendedContent"));
|
|
|
|
testQuery("SELECT * FROM test:extendedContent", 1, false, "cmis:name", new String(), false);
|
|
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM test:extendedContent", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(1, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("test:singleDatetime");
|
|
Date value = DefaultTypeConverter.INSTANCE.convert(Date.class, sValue);
|
|
assertEquals(date1, value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("test:singleDatetime");
|
|
assertEquals(PropertyType.DATETIME, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
|
|
sValue = row.getValue("test:multipleDatetime");
|
|
assert (sValue instanceof Collection<?>);
|
|
Collection<Date> collection = DefaultTypeConverter.INSTANCE.getCollection(Date.class, sValue);
|
|
assertEquals(2, collection.size());
|
|
Date[] members = new Date[2];
|
|
members = collection.toArray(members);
|
|
assertEquals(date1, members[0]);
|
|
assertEquals(date2, members[1]);
|
|
column = rs.getResultSetMetaData().getColumn("test:multipleDatetime");
|
|
assertEquals(PropertyType.DATETIME, column.getCMISDataType());
|
|
assertEquals(Cardinality.MULTI, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
}
|
|
rs.close();
|
|
|
|
SimpleDateFormat df1 = new SimpleDateFormat("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'SSSZ");
|
|
|
|
String d0 = df1.format(date0);
|
|
StringBuilder builder = new StringBuilder();
|
|
builder.append(d0);
|
|
builder.insert(builder.length() - 2, ':');
|
|
d0 = builder.toString();
|
|
|
|
String d1 = df1.format(date1);
|
|
builder = new StringBuilder();
|
|
builder.append(d1);
|
|
builder.insert(builder.length() - 2, ':');
|
|
d1 = builder.toString();
|
|
|
|
String d2 = df1.format(date2);
|
|
builder = new StringBuilder();
|
|
builder.append(d2);
|
|
builder.insert(builder.length() - 2, ':');
|
|
d2 = builder.toString();
|
|
|
|
// d:datetime single
|
|
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDatetime = TIMESTAMP '" + d1 + "'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDatetime = TIMESTAMP '" + d2 + "'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDatetime <> TIMESTAMP '" + d1 + "'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDatetime <> TIMESTAMP '" + d2 + "'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDatetime < TIMESTAMP '" + d1 + "'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDatetime < TIMESTAMP '" + d2 + "'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDatetime <= TIMESTAMP '" + d1 + "'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDatetime <= TIMESTAMP '" + d2 + "'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDatetime > TIMESTAMP '" + d1 + "'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDatetime > TIMESTAMP '" + d0 + "'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDatetime >= TIMESTAMP '" + d1 + "'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDatetime >= TIMESTAMP '" + d0 + "'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDatetime LIKE TIMESTAMP '" + d1 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDatetime NOT LIKE TIMESTAMP '" + d2 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDatetime IN (TIMESTAMP '" + d0 + "' ,TIMESTAMP '" + d1 + "')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleDatetime NOT IN (TIMESTAMP '" + d2 + "')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE TIMESTAMP '" + d1 + "' = ANY test:singleDatetime ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE TIMESTAMP '" + d2 + "' = ANY test:singleDatetime ", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:singleDatetime IN (TIMESTAMP '" + d1 + "', TIMESTAMP '" + d2 + "')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:singleDatetime NOT IN (TIMESTAMP '" + d0 + "', TIMESTAMP '" + d2 + "')", 1, false, "cmis:name", new String(),
|
|
true);
|
|
|
|
// d:datetime single by alias
|
|
|
|
testQuery("SELECT test:singleDatetime alias FROM test:extendedContent WHERE alias = TIMESTAMP '" + d1 + "'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDatetime alias FROM test:extendedContent WHERE alias = TIMESTAMP '" + d2 + "'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDatetime alias FROM test:extendedContent WHERE alias <> TIMESTAMP '" + d1 + "'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDatetime alias FROM test:extendedContent WHERE alias <> TIMESTAMP '" + d2 + "'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDatetime alias FROM test:extendedContent WHERE alias < TIMESTAMP '" + d1 + "'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDatetime alias FROM test:extendedContent WHERE alias < TIMESTAMP '" + d2 + "'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDatetime alias FROM test:extendedContent WHERE alias <= TIMESTAMP '" + d1 + "'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDatetime alias FROM test:extendedContent WHERE alias <= TIMESTAMP '" + d2 + "'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDatetime alias FROM test:extendedContent WHERE alias > TIMESTAMP '" + d1 + "'", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDatetime alias FROM test:extendedContent WHERE alias > TIMESTAMP '" + d0 + "'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDatetime alias FROM test:extendedContent WHERE alias >= TIMESTAMP '" + d1 + "'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDatetime alias FROM test:extendedContent WHERE alias >= TIMESTAMP '" + d0 + "'", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDatetime alias FROM test:extendedContent WHERE alias LIKE TIMESTAMP '" + d1 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleDatetime alias FROM test:extendedContent WHERE alias NOT LIKE TIMESTAMP '" + d2 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleDatetime alias FROM test:extendedContent WHERE alias IN (TIMESTAMP '" + d0 + "' ,TIMESTAMP '" + d1 + "')", 1, false, "cmis:name",
|
|
new String(), false);
|
|
testQuery("SELECT test:singleDatetime alias FROM test:extendedContent WHERE alias NOT IN (TIMESTAMP '" + d2 + "')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleDatetime alias FROM test:extendedContent WHERE TIMESTAMP '" + d1 + "' = ANY alias ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleDatetime alias FROM test:extendedContent WHERE TIMESTAMP '" + d2 + "' = ANY alias ", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleDatetime alias FROM test:extendedContent WHERE ANY alias IN (TIMESTAMP '" + d1 + "', TIMESTAMP '" + d2 + "')", 1, false, "cmis:name",
|
|
new String(), true);
|
|
testQuery("SELECT test:singleDatetime alias FROM test:extendedContent WHERE ANY alias NOT IN (TIMESTAMP '" + d0 + "', TIMESTAMP '" + d2 + "')", 1, false, "cmis:name",
|
|
new String(), true);
|
|
|
|
// d:date multiple
|
|
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDatetime = TIMESTAMP '" + d1 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDatetime = TIMESTAMP '" + d2 + "'", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDatetime <> TIMESTAMP '" + d1 + "'", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDatetime <> TIMESTAMP '" + d2 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDatetime < TIMESTAMP '" + d1 + "'", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDatetime < TIMESTAMP '" + d2 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDatetime <= TIMESTAMP '" + d1 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDatetime <= TIMESTAMP '" + d2 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDatetime > TIMESTAMP '" + d1 + "'", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDatetime > TIMESTAMP '" + d0 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDatetime >= TIMESTAMP '" + d1 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDatetime >= TIMESTAMP '" + d0 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDatetime LIKE TIMESTAMP '" + d0 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDatetime NOT LIKE TIMESTAMP '" + d2 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDatetime IN (TIMESTAMP '" + d1 + "', TIMESTAMP '" + d2 + "')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleDatetime NOT IN (TIMESTAMP '" + d1 + "')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE TIMESTAMP '" + d1 + "' = ANY test:multipleDatetime ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE TIMESTAMP '" + d2 + "' = ANY test:multipleDatetime ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleDatetime IN (TIMESTAMP '" + d1 + "', TIMESTAMP '" + d2 + "')", 1, false, "cmis:name", new String(),
|
|
false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleDatetime IN (TIMESTAMP '" + d2 + "', TIMESTAMP '" + d0 + "')", 1, false, "cmis:name", new String(),
|
|
false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleDatetime NOT IN (TIMESTAMP '" + d0 + "', TIMESTAMP '" + d1 + "')", 0, false, "cmis:name",
|
|
new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleDatetime NOT IN (TIMESTAMP '" + d1 + "', TIMESTAMP '" + d2 + "')", 0, false, "cmis:name",
|
|
new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleDatetime NOT IN (TIMESTAMP '" + d0 + "')", 1, false, "cmis:name", new String(), false);
|
|
|
|
// d:date multiple by alias
|
|
|
|
testQuery("SELECT test:multipleDatetime alias FROM test:extendedContent WHERE alias = TIMESTAMP '" + d1 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDatetime alias FROM test:extendedContent WHERE alias = TIMESTAMP '" + d2 + "'", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDatetime alias FROM test:extendedContent WHERE alias <> TIMESTAMP '" + d1 + "'", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDatetime alias FROM test:extendedContent WHERE alias <> TIMESTAMP '" + d2 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDatetime alias FROM test:extendedContent WHERE alias < TIMESTAMP '" + d1 + "'", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDatetime alias FROM test:extendedContent WHERE alias < TIMESTAMP '" + d2 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDatetime alias FROM test:extendedContent WHERE alias <= TIMESTAMP '" + d1 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDatetime alias FROM test:extendedContent WHERE alias <= TIMESTAMP '" + d2 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDatetime alias FROM test:extendedContent WHERE alias > TIMESTAMP '" + d1 + "'", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDatetime alias FROM test:extendedContent WHERE alias > TIMESTAMP '" + d0 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDatetime alias FROM test:extendedContent WHERE alias >= TIMESTAMP '" + d1 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDatetime alias FROM test:extendedContent WHERE alias >= TIMESTAMP '" + d0 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDatetime alias FROM test:extendedContent WHERE alias LIKE TIMESTAMP '" + d0 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDatetime alias FROM test:extendedContent WHERE alias NOT LIKE TIMESTAMP '" + d2 + "'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDatetime alias FROM test:extendedContent WHERE alias IN (TIMESTAMP '" + d1 + "', TIMESTAMP '" + d2 + "')", 1, false, "cmis:name",
|
|
new String(), true);
|
|
testQuery("SELECT test:multipleDatetime alias FROM test:extendedContent WHERE alias NOT IN (TIMESTAMP '" + d1 + "')", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleDatetime alias FROM test:extendedContent WHERE TIMESTAMP '" + d1 + "' = ANY alias ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleDatetime alias FROM test:extendedContent WHERE TIMESTAMP '" + d2 + "' = ANY alias ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleDatetime alias FROM test:extendedContent WHERE ANY alias IN (TIMESTAMP '" + d1 + "', TIMESTAMP '" + d2 + "')", 1, false, "cmis:name",
|
|
new String(), false);
|
|
testQuery("SELECT test:multipleDatetime alias FROM test:extendedContent WHERE ANY alias IN (TIMESTAMP '" + d2 + "', TIMESTAMP '" + d0 + "')", 1, false, "cmis:name",
|
|
new String(), false);
|
|
testQuery("SELECT test:multipleDatetime alias FROM test:extendedContent WHERE ANY alias NOT IN (TIMESTAMP '" + d0 + "', TIMESTAMP '" + d1 + "')", 0, false, "cmis:name",
|
|
new String(), false);
|
|
testQuery("SELECT test:multipleDatetime alias FROM test:extendedContent WHERE ANY alias NOT IN (TIMESTAMP '" + d1 + "', TIMESTAMP '" + d2 + "')", 0, false, "cmis:name",
|
|
new String(), false);
|
|
testQuery("SELECT test:multipleDatetime alias FROM test:extendedContent WHERE ANY alias NOT IN (TIMESTAMP '" + d0 + "')", 1, false, "cmis:name", new String(), false);
|
|
|
|
}
|
|
|
|
public void test_d_boolean() throws Exception
|
|
{
|
|
addTypeTestData();
|
|
assertNotNull(dictionaryService.getType(extendedContent));
|
|
assertNotNull(cmisDictionaryService.findTypeByQueryName("test:extendedContent"));
|
|
|
|
testQuery("SELECT * FROM test:extendedContent", 1, false, "cmis:name", new String(), false);
|
|
|
|
CMISQueryOptions options = new CMISQueryOptions("SELECT * FROM test:extendedContent", rootNodeRef.getStoreRef());
|
|
options.setDefaultFTSConnective(Connective.OR);
|
|
options.setDefaultFTSFieldConnective(Connective.OR);
|
|
CMISResultSet rs = cmisQueryService.query(options);
|
|
assertEquals(1, rs.length());
|
|
for (CMISResultSetRow row : rs)
|
|
{
|
|
Serializable sValue = row.getValue("test:singleBoolean");
|
|
Boolean value = DefaultTypeConverter.INSTANCE.convert(Boolean.class, sValue);
|
|
assertEquals(Boolean.TRUE, value);
|
|
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("test:singleBoolean");
|
|
assertEquals(PropertyType.BOOLEAN, column.getCMISDataType());
|
|
assertEquals(Cardinality.SINGLE, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
|
|
sValue = row.getValue("test:multipleBoolean");
|
|
assert (sValue instanceof Collection<?>);
|
|
Collection<Boolean> collection = DefaultTypeConverter.INSTANCE.getCollection(Boolean.class, sValue);
|
|
assertEquals(2, collection.size());
|
|
Boolean[] members = new Boolean[2];
|
|
members = collection.toArray(members);
|
|
assertEquals(Boolean.TRUE, members[0]);
|
|
assertEquals(Boolean.FALSE, members[1]);
|
|
column = rs.getResultSetMetaData().getColumn("test:multipleBoolean");
|
|
assertEquals(PropertyType.BOOLEAN, column.getCMISDataType());
|
|
assertEquals(Cardinality.MULTI, column.getCMISPropertyDefinition().getPropertyDefinition().getCardinality());
|
|
}
|
|
rs.close();
|
|
|
|
// d:boolean single
|
|
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleBoolean = TRUE", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleBoolean = true", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleBoolean = FALSE", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleBoolean = false", 0, false, "cmis:name", new String(), false);
|
|
// not strictly compliant...
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleBoolean = TRue", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleBoolean <> TRUE", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleBoolean <> FALSE", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleBoolean < TRUE", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleBoolean < FALSE", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleBoolean <= TRUE", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleBoolean <= FALSE", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleBoolean > TRUE", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleBoolean > FALSE", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleBoolean >= TRUE", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleBoolean >= FALSE", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleBoolean LIKE 'TRUE'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleBoolean NOT LIKE 'FALSE'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleBoolean IN (TRUE)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:singleBoolean NOT IN (FALSE)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE TRUE = ANY test:singleBoolean ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE FALSE = ANY test:singleBoolean ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:singleBoolean IN (TRUE)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:singleBoolean NOT IN (FALSE)", 1, false, "cmis:name", new String(), true);
|
|
|
|
// d:boolean single by alias
|
|
|
|
testQuery("SELECT test:singleBoolean alias FROM test:extendedContent WHERE alias = TRUE", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleBoolean alias FROM test:extendedContent WHERE alias = true", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleBoolean alias FROM test:extendedContent WHERE alias = FALSE", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleBoolean alias FROM test:extendedContent WHERE alias = false", 0, false, "cmis:name", new String(), false);
|
|
// not strictly compliant...
|
|
testQuery("SELECT test:singleBoolean alias FROM test:extendedContent WHERE alias = TRue", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:singleBoolean alias FROM test:extendedContent WHERE alias <> TRUE", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleBoolean alias FROM test:extendedContent WHERE alias <> FALSE", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleBoolean alias FROM test:extendedContent WHERE alias < TRUE", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleBoolean alias FROM test:extendedContent WHERE alias < FALSE", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleBoolean alias FROM test:extendedContent WHERE alias <= TRUE", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleBoolean alias FROM test:extendedContent WHERE alias <= FALSE", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleBoolean alias FROM test:extendedContent WHERE alias > TRUE", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleBoolean alias FROM test:extendedContent WHERE alias > FALSE", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleBoolean alias FROM test:extendedContent WHERE alias >= TRUE", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleBoolean alias FROM test:extendedContent WHERE alias >= FALSE", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleBoolean alias FROM test:extendedContent WHERE alias LIKE 'TRUE'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleBoolean alias FROM test:extendedContent WHERE alias NOT LIKE 'FALSE'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleBoolean alias FROM test:extendedContent WHERE alias IN (TRUE)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleBoolean alias FROM test:extendedContent WHERE alias NOT IN (FALSE)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleBoolean alias FROM test:extendedContent WHERE TRUE = ANY alias ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleBoolean alias FROM test:extendedContent WHERE FALSE = ANY alias ", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleBoolean alias FROM test:extendedContent WHERE ANY alias IN (TRUE)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:singleBoolean alias FROM test:extendedContent WHERE ANY alias NOT IN (FALSE)", 1, false, "cmis:name", new String(), true);
|
|
|
|
// d:boolean multiple
|
|
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleBoolean = 1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleBoolean = 2", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleBoolean <> 1", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleBoolean <> 2", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleBoolean < 1", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleBoolean < 2", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleBoolean <= 1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleBoolean <= 2", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleBoolean > 1", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleBoolean > 0", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleBoolean >= 1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleBoolean >= 0", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleBoolean LIKE '1'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleBoolean NOT LIKE '2'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleBoolean IN (1, 2)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE test:multipleBoolean NOT IN (2)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE '1' = ANY test:multipleBoolean ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE '2' = ANY test:multipleBoolean ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleBoolean IN (1, 2)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleBoolean IN (2, 3)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleBoolean NOT IN (1, 2)", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleBoolean NOT IN (2, 3)", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM test:extendedContent WHERE ANY test:multipleBoolean NOT IN (3, 4)", 1, false, "cmis:name", new String(), true);
|
|
|
|
// d:boolean multiple by alias
|
|
|
|
testQuery("SELECT test:multipleBoolean as alias FROM test:extendedContent WHERE alias = 1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleBoolean as alias FROM test:extendedContent WHERE alias = 2", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleBoolean as alias FROM test:extendedContent WHERE alias <> 1", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleBoolean as alias FROM test:extendedContent WHERE alias <> 2", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleBoolean as alias FROM test:extendedContent WHERE alias < 1", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleBoolean as alias FROM test:extendedContent WHERE alias < 2", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleBoolean as alias FROM test:extendedContent WHERE alias <= 1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleBoolean as alias FROM test:extendedContent WHERE alias <= 2", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleBoolean as alias FROM test:extendedContent WHERE alias > 1", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleBoolean as alias FROM test:extendedContent WHERE alias > 0", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleBoolean as alias FROM test:extendedContent WHERE alias >= 1", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleBoolean as alias FROM test:extendedContent WHERE alias >= 0", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleBoolean as alias FROM test:extendedContent WHERE alias LIKE '1'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleBoolean as alias FROM test:extendedContent WHERE alias NOT LIKE '2'", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleBoolean as alias FROM test:extendedContent WHERE alias IN (1, 2)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleBoolean as alias FROM test:extendedContent WHERE alias NOT IN (2)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleBoolean as alias FROM test:extendedContent WHERE '1' = ANY alias ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleBoolean as alias FROM test:extendedContent WHERE '2' = ANY alias ", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT test:multipleBoolean as alias FROM test:extendedContent WHERE ANY alias IN (1, 2)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleBoolean as alias FROM test:extendedContent WHERE ANY alias IN (2, 3)", 1, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleBoolean as alias FROM test:extendedContent WHERE ANY alias NOT IN (1, 2)", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleBoolean as alias FROM test:extendedContent WHERE ANY alias NOT IN (2, 3)", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT test:multipleBoolean as alias FROM test:extendedContent WHERE ANY alias NOT IN (3, 4)", 1, false, "cmis:name", new String(), true);
|
|
}
|
|
|
|
public void testBasicContainsSyntax() throws Exception
|
|
{
|
|
testQuery("SELECT * FROM cmis:document WHERE CONTAINS('quick')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM cmis:document WHERE CONTAINS('one')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM cmis:document WHERE CONTAINS('-quick')", doc_count-1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM cmis:document WHERE CONTAINS('quick brown fox')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM cmis:document WHERE CONTAINS('quick one')", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM cmis:document WHERE CONTAINS('quick -one')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM cmis:document WHERE CONTAINS('-quick one')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM cmis:document WHERE CONTAINS('-quick -one')", doc_count-2, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM cmis:document WHERE CONTAINS('fox brown quick')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM cmis:document WHERE CONTAINS('quick OR one')", 2, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM cmis:document WHERE CONTAINS('quick OR -one')", doc_count-1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM cmis:document WHERE CONTAINS('-quick OR -one')", doc_count, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM cmis:document WHERE CONTAINS('\\'quick brown fox\\'')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM cmis:document WHERE CONTAINS('\\'fox brown quick\\'')", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM cmis:document WHERE CONTAINS('\\'quick brown fox\\' one')", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM cmis:document WHERE CONTAINS('\\'quick brown fox\\' -one')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM cmis:document WHERE CONTAINS('-\\'quick brown fox\\' one')", 1, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM cmis:document WHERE CONTAINS('-\\'quick brown fox\\' -one')", doc_count-2, false, "cmis:name", new String(), false);
|
|
|
|
// escaping
|
|
testExtendedQuery("SELECT * FROM cmis:folder WHERE CONTAINS('cmis:name:\\'Folder 9\\\\\\'\\'')", 1, false, "cmis:name", new String(), false);
|
|
|
|
// precedence
|
|
testQuery("SELECT * FROM cmis:document WHERE CONTAINS('quick OR brown one')", 1, false, "cmis:name", new String(), false);
|
|
testExtendedQuery("SELECT * FROM cmis:document WHERE CONTAINS('quick OR brown AND one')", 1, false, "cmis:name", new String(), false);
|
|
testExtendedQuery("SELECT * FROM cmis:document WHERE CONTAINS('quick OR (brown AND one)')", 1, false, "cmis:name", new String(), false);
|
|
testExtendedQuery("SELECT * FROM cmis:document WHERE CONTAINS('(quick OR brown) AND one')", 0, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM cmis:document WHERE CONTAINS('quick OR brown OR one')", 2, false, "cmis:name", new String(), false);
|
|
testQuery("SELECT * FROM cmis:document WHERE CONTAINS('quick OR brown one')", 1, false, "cmis:name", new String(), false);
|
|
}
|
|
|
|
public void testOrderableProperties()
|
|
{
|
|
|
|
addTypeSortTestData();
|
|
|
|
assertTrue(cmisDictionaryService.findPropertyByQueryName("test:singleTextUntokenised").getPropertyDefinition().isOrderable());
|
|
assertFalse(cmisDictionaryService.findPropertyByQueryName("test:singleTextTokenised").getPropertyDefinition().isOrderable());
|
|
assertTrue(cmisDictionaryService.findPropertyByQueryName("test:singleTextBoth").getPropertyDefinition().isOrderable());
|
|
|
|
testOrderableProperty("test:singleTextUntokenised");
|
|
testOrderablePropertyFail("test:singleTextTokenised");
|
|
testOrderableProperty("test:singleTextBoth");
|
|
|
|
assertFalse(cmisDictionaryService.findPropertyByQueryName("test:multipleTextUntokenised").getPropertyDefinition().isOrderable());
|
|
assertFalse(cmisDictionaryService.findPropertyByQueryName("test:multipleTextTokenised").getPropertyDefinition().isOrderable());
|
|
assertFalse(cmisDictionaryService.findPropertyByQueryName("test:multipleTextBoth").getPropertyDefinition().isOrderable());
|
|
|
|
testOrderablePropertyFail("test:multipleTextUntokenised");
|
|
testOrderablePropertyFail("test:multipleTextTokenised");
|
|
testOrderablePropertyFail("test:multipleTextBoth");
|
|
|
|
assertTrue(cmisDictionaryService.findPropertyByQueryName("test:singleMLTextUntokenised").getPropertyDefinition().isOrderable());
|
|
assertFalse(cmisDictionaryService.findPropertyByQueryName("test:singleMLTextTokenised").getPropertyDefinition().isOrderable());
|
|
assertTrue(cmisDictionaryService.findPropertyByQueryName("test:singleMLTextBoth").getPropertyDefinition().isOrderable());
|
|
|
|
testOrderableProperty("test:singleMLTextUntokenised");
|
|
testOrderablePropertyFail("test:singleMLTextTokenised");
|
|
testOrderableProperty("test:singleMLTextBoth");
|
|
|
|
assertFalse(cmisDictionaryService.findPropertyByQueryName("test:multipleMLTextUntokenised").getPropertyDefinition().isOrderable());
|
|
assertFalse(cmisDictionaryService.findPropertyByQueryName("test:multipleMLTextTokenised").getPropertyDefinition().isOrderable());
|
|
assertFalse(cmisDictionaryService.findPropertyByQueryName("test:multipleMLTextBoth").getPropertyDefinition().isOrderable());
|
|
|
|
testOrderablePropertyFail("test:multipleMLTextUntokenised");
|
|
testOrderablePropertyFail("test:multipleMLTextTokenised");
|
|
testOrderablePropertyFail("test:multipleMLTextBoth");
|
|
|
|
assertTrue(cmisDictionaryService.findPropertyByQueryName("test:singleFloat").getPropertyDefinition().isOrderable());
|
|
assertFalse(cmisDictionaryService.findPropertyByQueryName("test:multipleFloat").getPropertyDefinition().isOrderable());
|
|
|
|
testOrderableProperty("test:singleFloat");
|
|
testOrderablePropertyFail("test:multipleFloat");
|
|
|
|
assertTrue(cmisDictionaryService.findPropertyByQueryName("test:singleDouble").getPropertyDefinition().isOrderable());
|
|
assertFalse(cmisDictionaryService.findPropertyByQueryName("test:multipleDouble").getPropertyDefinition().isOrderable());
|
|
|
|
testOrderableProperty("test:singleDouble");
|
|
testOrderablePropertyFail("test:multipleDouble");
|
|
|
|
assertTrue(cmisDictionaryService.findPropertyByQueryName("test:singleInteger").getPropertyDefinition().isOrderable());
|
|
assertFalse(cmisDictionaryService.findPropertyByQueryName("test:multipleInteger").getPropertyDefinition().isOrderable());
|
|
|
|
testOrderableProperty("test:singleInteger");
|
|
testOrderablePropertyFail("test:multipleInteger");
|
|
|
|
assertTrue(cmisDictionaryService.findPropertyByQueryName("test:singleLong").getPropertyDefinition().isOrderable());
|
|
assertFalse(cmisDictionaryService.findPropertyByQueryName("test:multipleLong").getPropertyDefinition().isOrderable());
|
|
|
|
testOrderableProperty("test:singleLong");
|
|
testOrderablePropertyFail("test:multipleLong");
|
|
|
|
assertTrue(cmisDictionaryService.findPropertyByQueryName("test:singleDate").getPropertyDefinition().isOrderable());
|
|
assertFalse(cmisDictionaryService.findPropertyByQueryName("test:multipleDate").getPropertyDefinition().isOrderable());
|
|
|
|
testOrderableProperty("test:singleDate");
|
|
testOrderablePropertyFail("test:multipleDate");
|
|
|
|
assertTrue(cmisDictionaryService.findPropertyByQueryName("test:singleDatetime").getPropertyDefinition().isOrderable());
|
|
assertFalse(cmisDictionaryService.findPropertyByQueryName("test:multipleDatetime").getPropertyDefinition().isOrderable());
|
|
|
|
testOrderableProperty("test:singleDatetime");
|
|
testOrderablePropertyFail("test:multipleDatetime");
|
|
|
|
assertTrue(cmisDictionaryService.findPropertyByQueryName("test:singleBoolean").getPropertyDefinition().isOrderable());
|
|
assertFalse(cmisDictionaryService.findPropertyByQueryName("test:multipleBoolean").getPropertyDefinition().isOrderable());
|
|
|
|
testOrderableProperty("test:singleBoolean");
|
|
testOrderablePropertyFail("test:multipleBoolean");
|
|
}
|
|
|
|
public void testNonQueryableTypes() throws Exception
|
|
{
|
|
testQuery("SELECT * FROM cmis:policy", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM cmis:relationship ", 0, false, "cmis:name", new String(), true);
|
|
testQuery("SELECT * FROM cm:ownable ", 0, false, "cmis:name", new String(), true);
|
|
testExtendedQuery("SELECT * FROM cm:ownable ", 1, false, "cmis:name", new String(), false);
|
|
}
|
|
|
|
private void testOrderableProperty(String propertyQueryName)
|
|
{
|
|
testOrderBy("SELECT " + propertyQueryName + " FROM test:extendedContent ORDER BY " + propertyQueryName + " ASC", 13, false, Order.ASCENDING, CMISQueryMode.CMS_STRICT,
|
|
propertyQueryName);
|
|
testOrderBy("SELECT " + propertyQueryName + " FROM test:extendedContent ORDER BY " + propertyQueryName + " DESC", 13, false, Order.DESCENDING, CMISQueryMode.CMS_STRICT,
|
|
propertyQueryName);
|
|
testOrderBy("SELECT " + propertyQueryName + " FROM test:extendedContent ORDER BY " + propertyQueryName + " DESC", 13, true, Order.ASCENDING, CMISQueryMode.CMS_STRICT,
|
|
propertyQueryName);
|
|
}
|
|
|
|
private void testOrderablePropertyFail(String propertyQueryName)
|
|
{
|
|
testOrderBy("SELECT " + propertyQueryName + " FROM test:extendedContent ORDER BY " + propertyQueryName + " ASC", 13, true, Order.ASCENDING, CMISQueryMode.CMS_STRICT,
|
|
propertyQueryName);
|
|
testOrderBy("SELECT " + propertyQueryName + " FROM test:extendedContent ORDER BY " + propertyQueryName + " DESC", 13, true, Order.DESCENDING, CMISQueryMode.CMS_STRICT,
|
|
propertyQueryName);
|
|
testOrderBy("SELECT " + propertyQueryName + " FROM test:extendedContent ORDER BY " + propertyQueryName + " DESC", 13, true, Order.ASCENDING, CMISQueryMode.CMS_STRICT,
|
|
propertyQueryName);
|
|
}
|
|
|
|
private void addTypeTestDataModel()
|
|
{
|
|
// load in the test model
|
|
ClassLoader cl = BaseNodeServiceTest.class.getClassLoader();
|
|
InputStream modelStream = cl.getResourceAsStream("org/alfresco/cmis/search/CMIS-query-test-model.xml");
|
|
assertNotNull(modelStream);
|
|
M2Model model = M2Model.createModel(modelStream);
|
|
dictionaryDAO.putModel(model);
|
|
|
|
((CMISAbstractDictionaryService) cmisDictionaryService).afterDictionaryDestroy();
|
|
((CMISAbstractDictionaryService) cmisDictionaryService).afterDictionaryInit();
|
|
|
|
namespaceDao.addPrefix("test", "http://www.alfresco.org/test/cmis-query-test");
|
|
}
|
|
|
|
private void addTypeSortTestData()
|
|
{
|
|
addTypeTestDataModel();
|
|
|
|
addSortableNull("start");
|
|
for (int i = 0; i < 10; i++)
|
|
{
|
|
addSortableNode(i);
|
|
if (i == 5)
|
|
{
|
|
addSortableNull("mid");
|
|
}
|
|
}
|
|
|
|
addSortableNull("end");
|
|
}
|
|
|
|
private NodeRef addSortableNull(String id)
|
|
{
|
|
Map<QName, Serializable> properties = new HashMap<QName, Serializable>();
|
|
MLText ml = new MLText();
|
|
ml.addValue(Locale.ENGLISH, "Test null");
|
|
properties.put(ContentModel.PROP_DESCRIPTION, ml);
|
|
properties.put(ContentModel.PROP_TITLE, ml);
|
|
properties.put(ContentModel.PROP_NAME, "Test null "+id);
|
|
properties.put(ContentModel.PROP_CREATED, new Date());
|
|
NodeRef c0 = nodeService.createNode(f0, ContentModel.ASSOC_CONTAINS, QName.createQName("cm", "Test One", namespaceService), extendedContent, properties).getChildRef();
|
|
return c0;
|
|
}
|
|
|
|
private static String[] orderable = new String[] { "zero loons", "one banana", "two apples", "three fruit", "four lemurs", "five rats", "six badgers", "seven cards",
|
|
"eight cabbages", "nine zebras", "ten lemons" };
|
|
|
|
private NodeRef addSortableNode(int position)
|
|
{
|
|
Map<QName, Serializable> properties = new HashMap<QName, Serializable>();
|
|
MLText ml = new MLText();
|
|
ml.addValue(Locale.ENGLISH, "Test " + position);
|
|
properties.put(ContentModel.PROP_DESCRIPTION, ml);
|
|
properties.put(ContentModel.PROP_TITLE, ml);
|
|
properties.put(ContentModel.PROP_NAME, "Test " + position);
|
|
properties.put(ContentModel.PROP_CREATED, new Date());
|
|
properties.put(singleTextUntokenised, orderable[position]);
|
|
properties.put(singleTextTokenised, orderable[position]);
|
|
properties.put(singleTextBoth, orderable[position]);
|
|
properties.put(multipleTextUntokenised, asArray(orderable[position], orderable[position + 1]));
|
|
properties.put(multipleTextTokenised, asArray(orderable[position], orderable[position + 1]));
|
|
properties.put(multipleTextBoth, asArray(orderable[position], orderable[position + 1]));
|
|
properties.put(singleMLTextUntokenised, makeMLText(position));
|
|
properties.put(singleMLTextTokenised, makeMLText(position));
|
|
properties.put(singleMLTextBoth, makeMLText(position));
|
|
properties.put(multipleMLTextUntokenised, makeMLTextMVP(position));
|
|
properties.put(multipleMLTextTokenised, makeMLTextMVP(position));
|
|
properties.put(multipleMLTextBoth, makeMLTextMVP(position));
|
|
properties.put(singleFloat, 1.1f * position);
|
|
properties.put(multipleFloat, asArray(1.1f * position, 2.2f * position));
|
|
properties.put(singleDouble, 1.1d * position);
|
|
properties.put(multipleDouble, asArray(1.1d * position, 2.2d * position));
|
|
properties.put(singleInteger, 1 * position);
|
|
properties.put(multipleInteger, asArray(1 * position, 2 * position));
|
|
properties.put(singleLong, 1l * position);
|
|
properties.put(multipleLong, asArray(1l * position, 2l * position));
|
|
GregorianCalendar cal = new GregorianCalendar();
|
|
cal.setTime(new Date());
|
|
cal.add(Calendar.DAY_OF_MONTH, position);
|
|
Date d1 = cal.getTime();
|
|
cal.add(Calendar.DAY_OF_MONTH, -1);
|
|
// Date d0 = cal.getTime();
|
|
cal.add(Calendar.DAY_OF_MONTH, 2);
|
|
Date d2 = cal.getTime();
|
|
properties.put(singleDate, d1);
|
|
properties.put(multipleDate, asArray(d1, d2));
|
|
properties.put(singleDatetime, d1);
|
|
properties.put(multipleDatetime, asArray(d1, d2));
|
|
properties.put(singleBoolean, position % 2 == 0 ? true : false);
|
|
properties.put(multipleBoolean, asArray(true, false));
|
|
NodeRef c0 = nodeService.createNode(f0, ContentModel.ASSOC_CONTAINS, QName.createQName("cm", "Test One", namespaceService), extendedContent, properties).getChildRef();
|
|
return c0;
|
|
}
|
|
|
|
private NodeRef addTypeTestData()
|
|
{
|
|
addTypeTestDataModel();
|
|
|
|
I18NUtil.setLocale(Locale.UK);
|
|
|
|
Map<QName, Serializable> properties = new HashMap<QName, Serializable>();
|
|
MLText ml = new MLText();
|
|
ml.addValue(Locale.ENGLISH, "Test one");
|
|
ml.addValue(Locale.US, "Test 1");
|
|
properties.put(ContentModel.PROP_DESCRIPTION, ml);
|
|
properties.put(ContentModel.PROP_TITLE, ml);
|
|
properties.put(ContentModel.PROP_NAME, "Test one");
|
|
properties.put(ContentModel.PROP_CREATED, new Date());
|
|
properties.put(singleTextUntokenised, "Un tokenised");
|
|
properties.put(singleTextTokenised, "Un tokenised");
|
|
properties.put(singleTextBoth, "Un tokenised");
|
|
properties.put(multipleTextUntokenised, asArray("Un tokenised", "two parts"));
|
|
properties.put(multipleTextTokenised, asArray("Un tokenised", "two parts"));
|
|
properties.put(multipleTextBoth, asArray("Un tokenised", "two parts"));
|
|
properties.put(singleMLTextUntokenised, makeMLText());
|
|
properties.put(singleMLTextTokenised, makeMLText());
|
|
properties.put(singleMLTextBoth, makeMLText());
|
|
properties.put(multipleMLTextUntokenised, makeMLTextMVP());
|
|
properties.put(multipleMLTextTokenised, makeMLTextMVP());
|
|
properties.put(multipleMLTextBoth, makeMLTextMVP());
|
|
properties.put(singleFloat, 1f);
|
|
properties.put(multipleFloat, asArray(1f, 1.1f));
|
|
properties.put(singleDouble, 1d);
|
|
properties.put(multipleDouble, asArray(1d, 1.1d));
|
|
properties.put(singleInteger, 1);
|
|
properties.put(multipleInteger, asArray(1, 2));
|
|
properties.put(singleLong, 1l);
|
|
properties.put(multipleLong, asArray(1l, 2l));
|
|
date1 = new Date();
|
|
GregorianCalendar cal = new GregorianCalendar();
|
|
cal.setTime(date1);
|
|
cal.add(Calendar.DAY_OF_MONTH, -1);
|
|
date0 = cal.getTime();
|
|
cal.add(Calendar.DAY_OF_MONTH, 2);
|
|
date2 = cal.getTime();
|
|
properties.put(singleDate, date1);
|
|
properties.put(multipleDate, asArray(date1, date2));
|
|
properties.put(singleDatetime, date1);
|
|
properties.put(multipleDatetime, asArray(date1, date2));
|
|
properties.put(singleBoolean, true);
|
|
properties.put(multipleBoolean, asArray(true, false));
|
|
NodeRef c0 = nodeService.createNode(f0, ContentModel.ASSOC_CONTAINS, QName.createQName("cm", "Test One", namespaceService), extendedContent, properties).getChildRef();
|
|
return c0;
|
|
}
|
|
|
|
private static String[] mlOrderable_en = new String[] { "AAAA BBBB", "EEEE FFFF", "II", "KK", "MM", "OO", "QQ", "SS", "UU", "AA", "CC" };
|
|
|
|
private static String[] mlOrderable_fr = new String[] { "CCCC DDDD", "GGGG HHHH", "JJ", "LL", "NN", "PP", "RR", "TT", "VV", "BB", "DD" };
|
|
|
|
private MLText makeMLText()
|
|
{
|
|
return makeMLText(0);
|
|
}
|
|
|
|
private MLText makeMLText(int position)
|
|
{
|
|
MLText ml = new MLText();
|
|
ml.addValue(Locale.ENGLISH, mlOrderable_en[position]);
|
|
ml.addValue(Locale.FRENCH, mlOrderable_fr[position]);
|
|
return ml;
|
|
}
|
|
|
|
private ArrayList<MLText> makeMLTextMVP()
|
|
{
|
|
return makeMLTextMVP(0);
|
|
}
|
|
|
|
private ArrayList<MLText> makeMLTextMVP(int position)
|
|
{
|
|
MLText m1 = new MLText();
|
|
m1.addValue(Locale.ENGLISH, mlOrderable_en[position]);
|
|
MLText m2 = new MLText();
|
|
m2.addValue(Locale.FRENCH, mlOrderable_fr[position]);
|
|
ArrayList<MLText> answer = new ArrayList<MLText>(2);
|
|
answer.add(m1);
|
|
answer.add(m2);
|
|
return answer;
|
|
}
|
|
|
|
private <T> ArrayList<T> asArray(T... ts)
|
|
{
|
|
ArrayList<T> list = new ArrayList<T>(ts.length);
|
|
for (T t : ts)
|
|
{
|
|
list.add(t);
|
|
}
|
|
return list;
|
|
}
|
|
}
|