001package org.nuxeo.ecm.mobile.webengine.adapter; 002 003import java.util.Collections; 004import java.util.HashMap; 005import java.util.Map; 006 007import org.nuxeo.ecm.core.api.CoreSession; 008import org.nuxeo.ecm.core.api.DocumentModel; 009import org.nuxeo.ecm.core.api.DocumentModelComparator; 010import org.nuxeo.ecm.core.api.DocumentModelList; 011import org.nuxeo.ecm.core.api.Filter; 012import org.nuxeo.ecm.core.api.impl.CompoundFilter; 013import org.nuxeo.ecm.core.api.impl.FacetFilter; 014import org.nuxeo.ecm.core.api.impl.LifeCycleFilter; 015import org.nuxeo.ecm.mobile.webengine.document.MobileDocument; 016import org.nuxeo.ecm.webengine.WebException; 017import org.nuxeo.ecm.webengine.model.impl.DefaultAdapter; 018 019/** 020 * Default mobile adapter that exposes some usefull methods to other adapters. 021 * 022 * @author <a href="mailto:akervern@nuxeo.com">Arnaud Kervern</a> 023 */ 024public abstract class DefaultMobileAdapter extends DefaultAdapter { 025 public static final Filter ONLY_VISIBLE_CHILDREN = new CompoundFilter(new FacetFilter(null, 026 Collections.singletonList("HiddenInNavigation")), new LifeCycleFilter(null, 027 Collections.singletonList("deleted"))); 028 029 /** 030 * Get the current DocumentModel 031 * 032 * @return 033 */ 034 protected DocumentModel getDocumentModel() { 035 MobileDocument doc = getMobileDocument(); 036 if (doc == null) { 037 doc = getMobileDocument(); 038 } 039 return doc.getDocument(); 040 } 041 042 /** 043 * Get the current MobileDocument 044 * 045 * @return 046 */ 047 protected MobileDocument getMobileDocument() { 048 Object targetObject = ctx.getTargetObject(); 049 if (!(targetObject instanceof MobileDocument)) { 050 throw new WebException("Target Object must be MobileDocument"); 051 } 052 053 MobileDocument mobileDoc = (MobileDocument) targetObject; 054 return mobileDoc; 055 } 056 057 public DocumentModelList getChildren() { 058 CoreSession session = ctx.getCoreSession(); 059 Map<String, String> order = new HashMap<String, String>(); 060 order.put("title", "asc"); 061 062 DocumentModelComparator dmc = new DocumentModelComparator("dublincore", order); 063 064 return session.getChildren(getDocumentModel().getRef(), null, ONLY_VISIBLE_CHILDREN, dmc); 065 } 066}