package org.orienteer.pages; import java.util.Iterator; import java.util.List; import org.apache.wicket.request.IRequestMapper; import org.apache.wicket.request.mapper.CompoundRequestMapper; import org.orienteer.pages.module.PagesModule; import com.orientechnologies.orient.core.db.document.ODatabaseDocument; import com.orientechnologies.orient.core.db.record.OIdentifiable; import com.orientechnologies.orient.core.record.impl.ODocument; import com.orientechnologies.orient.core.sql.query.OSQLSynchQuery; import ru.ydn.wicket.wicketorientdb.utils.DBClosure; /** * Main {@link IRequestMapper} for Orienteer Pages */ public class PagesCompoundRequestMapper extends CompoundRequestMapper { public PagesCompoundRequestMapper() { super(); initialPagesLoad(); } protected void initialPagesLoad() { new DBClosure<Boolean>() { @Override protected Boolean execute(ODatabaseDocument db) { List<ODocument> pages = db.query(new OSQLSynchQuery<ODocument>("select from "+PagesModule.OCLASS_PAGE)); for (ODocument pageDoc : pages) { if(pageDoc.field(PagesModule.OPROPERTY_PATH)!=null) add(pageDoc); } return true; } }.execute(); } public PagesCompoundRequestMapper add(OIdentifiable pageDocId) { super.add(new PagesMountedMapper(pageDocId)); return this; } public PagesCompoundRequestMapper remove(OIdentifiable pageDocId) { for(IRequestMapper mapper : this) { if(mapper instanceof PagesMountedMapper && ((PagesMountedMapper)mapper).isServing(pageDocId)) { remove(mapper); break; } } return this; } }