/** * Preload recursivement le wikitty, en fonction de sa chaine preloadPattern * et des tags values des extensions qu'il a.. * @param w le wikitty a precharger * @param available la liste des wikitty deja disponible sans restore explicite * @param loaded la liste de couple wid + fqfield deja traite */ protected void preload(Wikitty w, Map<String, Wikitty> available, Set<String> loaded) { if (w != null) { for (String p : w.getAllPreloadPattern()) { preload(w, available, loaded, p); } } }
preload(w, available, loaded);
/** * Restore wikitty entity with specified id or {@code null} if entity can't be be found. * * @param id entity ids if null return is empty list * @param preload patterns des liens qu'il faut precharger par exemple: * "Company.employee, Employee.person", "Company.address, Address.*" * @return wikitty entity with specified id or {@code null} if entity can't be found */ public List<Wikitty> restore(List<String> id, String ... preload) { long start = TimeLog.getTime(); List<Wikitty> result; if (id == null) { result = new ArrayList<Wikitty>(); } else { result = wikittyService.restore(securityToken, id); preload(result, preload); } timeLog.log(start, "restore<list>"); return result; }
public Wikitty store(Wikitty w) { long start = TimeLog.getTime(); WikittyEvent resp = wikittyService.store(securityToken, w); // update object resp.update(w); // on recharge les preload, comme demande au moment du restore initial preload(Collections.singletonList(w)); timeLog.log(start, "store"); return w; }
public List<Wikitty> storeWikitty(List<Wikitty> wikitties) { long start = TimeLog.getTime(); // call the service with Wikitty WikittyEvent resp = wikittyService.store(securityToken, wikitties); // update object for (Wikitty w : wikitties) { resp.update(w); } // on recharge les preload, comme demande au moment du restore initial preload(wikitties); timeLog.log(start, "storeWikitty<list>"); return wikitties; }
@Test public void testPreloadSimple() throws Exception { WikittyUserImpl user = new WikittyUserImpl(); user.setLogin("moi"); WikittyAuthorisationImpl auth = new WikittyAuthorisationImpl(); auth.setOwner(user.getWikittyId()); wikittyClient.store(user, auth); Wikitty authRestored = wikittyClient.restore(auth.getWikittyId()); Assert.assertNull(authRestored.getPreloaded().get(user.getWikittyId())); wikittyClient.preload(Arrays.asList(authRestored), "WikittyAuthorisation.owner"); Assert.assertNotNull(authRestored.getPreloaded().get(user.getWikittyId())); }
@Test public void testPreloadBoucle() throws Exception { WikittyUserImpl user = new WikittyUserImpl(); user.setLogin("moi"); WikittyAuthorisationImpl auth = new WikittyAuthorisationImpl(); auth.setOwner(user.getWikittyId()); auth.addParent(auth.getWikittyId()); wikittyClient.store(auth, user); Wikitty authRestored = wikittyClient.restore(auth.getWikittyId()); Assert.assertNull(authRestored.getPreloaded().get(user.getWikittyId())); wikittyClient.preload(Arrays.asList(authRestored), "WikittyAuthorisation.parent,WikittyAuthorisation.parent,WikittyAuthorisation.owner"); // parent doit avoir ete restorer Assert.assertNotNull(authRestored.getPreloaded().get(auth.getWikittyId())); // mais owner non, car on le demande apres deux fois parent et vu que // parent a deja ete traiter vu qu'on boucle sur nous meme, owner ne // sera pas preloade (comportement normale) Assert.assertNull(authRestored.getPreloaded().get(user.getWikittyId())); }
@Test public void testPreloadCollection() throws Exception { WikittyLabelImpl l1 = new WikittyLabelImpl(); l1.addLabels("l1"); WikittyLabelImpl l2 = new WikittyLabelImpl(); l2.addLabels("l2"); WikittyLabelImpl l3 = new WikittyLabelImpl(); l3.addLabels("l3"); WikittyGroupImpl group = new WikittyGroupImpl(); group.addMembers(l1.getWikittyId(), l2.getWikittyId(), l3.getWikittyId()); wikittyClient.store(group, l1, l2, l3); Wikitty groupRestored = wikittyClient.restore(group.getWikittyId()); Assert.assertNull(groupRestored.getPreloaded().get(l1.getWikittyId())); Assert.assertNull(groupRestored.getPreloaded().get(l2.getWikittyId())); Assert.assertNull(groupRestored.getPreloaded().get(l3.getWikittyId())); wikittyClient.preload(Arrays.asList(groupRestored), "WikittyGroup.members"); Assert.assertNotNull(groupRestored.getPreloaded().get(l1.getWikittyId())); Assert.assertNotNull(groupRestored.getPreloaded().get(l2.getWikittyId())); Assert.assertNotNull(groupRestored.getPreloaded().get(l3.getWikittyId())); }