@Override public Response apply(List<BundleInfo> infos) { final Set<BundleVersion> versions = set(); for (BundleInfo bundle : infos) { versions.add(bundle.getVersion()); } final BundleInfo example = infos.get(0); switch (versions.size()) { case 0: // no versions... throw new Error("bug"); case 1: // all versions align return ok(obj(p("consistent", true)).append(fullVersionJson.apply(example.getVersion()))); default: // multiple versions found return ok(obj(p("consistent", false), p("versions", arr(mlist(versions.iterator()) .map(Functions.<BundleVersion, Jsons.Val> co(fullVersionJson)))))); } } });
private void storeIncidentTexts(Bundle bundle) { logger.debug("Scanning bundle {}, (ID {}) for incident localizations", bundle.getSymbolicName(), bundle.getBundleId()); final Enumeration<?> l10n = bundle.findEntries(INCIDENT_L10N_DIR, PROPERTIES_GLOB, false); while (l10n != null && l10n.hasMoreElements()) { final URL resourceUrl = (URL) l10n.nextElement(); final String resourceFileName = resourceUrl.getPath(); // e.g. org.opencastproject.composer.properties or org.opencastproject.composer_de.properties final String fullResourceName = FilenameUtils.getBaseName(resourceFileName); final String[] fullResourceNameParts = fullResourceName.split("_"); // part 0 contains the key base, e.g. org.opencastproject.composer final String keyBase = fullResourceNameParts[0]; final List<String> locale = mlist(fullResourceNameParts).drop(1).value(); final Properties texts = loadPropertiesFromUrl(resourceUrl); for (String key : texts.stringPropertyNames()) { final String text = texts.getProperty(key); final String dbKey = mlist(keyBase, key).concat(locale).mkString("."); logger.debug("Storing text {}={}", dbKey, text); penv.tx(Queries.persistOrUpdate(IncidentTextDto.mk(dbKey, text))); } } } }
@Override public void endElement(String uri, String localName, String name) throws SAXException { super.endElement(uri, localName, name); if ("Type".equals(name)) { type = getContent(); return; } else if ("Description".equals(name)) { description = getContent(); return; } if ("Extensions".equals(name)) { extensions = getContent(); return; } else if ("MimeType".equals(name)) { String[] t = type.split("/"); MimeType mimeType = mimeType(t[0].trim(), t[1].trim(), mlist(extensions.split(",")).bind(Options.<String> asList().o(Strings.trimToNone)).value(), Collections.<MimeType> nil(), option(description), none(""), none("")); registry.add(mimeType); } }
mlist(episode.get(PROPERTY_TITLE)).map(dc2mvString(PROPERTY_TITLE.getLocalName())).value()); final List<MetadataValue<String>> subjects = mlist(episode.get(PROPERTY_SUBJECT)).map(dc2mvString(PROPERTY_SUBJECT.getLocalName())).value(); final List<MetadataValue<String>> creators = mlist(episode.get(PROPERTY_CREATOR)).map(dc2mvString(PROPERTY_CREATOR.getLocalName())).value(); final List<MetadataValue<String>> publishers = mlist(episode.get(PROPERTY_PUBLISHER)).map(dc2mvString(PROPERTY_PUBLISHER.getLocalName())).value(); final List<MetadataValue<String>> contributors = mlist(episode.get(PROPERTY_CONTRIBUTOR)).map(dc2mvString(PROPERTY_CONTRIBUTOR.getLocalName())).value(); final List<MetadataValue<String>> description = mlist(episode.get(PROPERTY_DESCRIPTION)).map(dc2mvString(PROPERTY_DESCRIPTION.getLocalName())).value(); final List<MetadataValue<String>> rightsHolders = mlist(episode.get(PROPERTY_RIGHTS_HOLDER)).map(dc2mvString(PROPERTY_RIGHTS_HOLDER.getLocalName())).value(); final List<MetadataValue<String>> spatials = mlist(episode.get(PROPERTY_SPATIAL)).map(dc2mvString(PROPERTY_SPATIAL.getLocalName())).value(); final List<MetadataValue<String>> accessRights = mlist(episode.get(PROPERTY_ACCESS_RIGHTS)).map(dc2mvString(PROPERTY_ACCESS_RIGHTS.getLocalName())).value(); final List<MetadataValue<String>> licenses = mlist(episode.get(PROPERTY_LICENSE)).map(dc2mvString(PROPERTY_LICENSE.getLocalName())).value();
/** * Constructor function for ACLs. * * @see #entry(String, String, boolean) * @see #entries(String, org.opencastproject.util.data.Tuple[]) */ public static AccessControlList acl(Either<AccessControlEntry, List<AccessControlEntry>>... entries) { // sequence entries final List<AccessControlEntry> seq = mlist(entries) .foldl(new ArrayList<AccessControlEntry>(), new Function2<List<AccessControlEntry>, Either<AccessControlEntry, List<AccessControlEntry>>, List<AccessControlEntry>>() { @Override public List<AccessControlEntry> apply(List<AccessControlEntry> sum, Either<AccessControlEntry, List<AccessControlEntry>> current) { if (current.isLeft()) sum.add(current.left().value()); else sum.addAll(current.right().value()); return sum; } }); return new AccessControlList(seq); }
/** * Find multiple objects with optional pagination. * * @param params * the query parameters * @param toA * map to the desired result object * @deprecated use {@link Queries#named} findAll(EntityManager, String, Option, Option, Object[]) instead */ @Deprecated public static <A, B> List<A> findAll(EntityManager em, final Function<B, A> toA, Option<Integer> offset, Option<Integer> limit, final String queryName, final Tuple<String, ?>... params) { final Query q = createNamedQuery(em, queryName, params); for (Integer x : offset) q.setFirstResult(x); for (Integer x : limit) q.setMaxResults(x); return mlist((List<B>) q.getResultList()).map(toA).value(); }
@Override public List<BundleInfoJpa> apply(EntityManager em) { final CriteriaBuilder cb = em.getCriteriaBuilder(); final CriteriaQuery<BundleInfoJpa> q = cb.createQuery(BundleInfoJpa.class); final Root<BundleInfoJpa> r = q.from(BundleInfoJpa.class); q.select(r); final Expression<String> symbolicNamePath = r.get("bundleSymbolicName"); final Predicate[] likes = toArray(Predicate.class, mlist(prefixes).map(new Function<String, Predicate>() { @Override public Predicate apply(String prefix) { return cb.like(symbolicNamePath, prefix + "%"); } }).value()); q.where(cb.or(likes)); q.orderBy(cb.asc(r.get("host")), cb.asc(symbolicNamePath)); return em.createQuery(q).getResultList(); } };
@Override public Map<EName, List<DublinCoreValue>> getValues() { return mlist(data.values().iterator()) .foldl(new HashMap<EName, List<DublinCoreValue>>(), new Function2<HashMap<EName, List<DublinCoreValue>>, List<CatalogEntry>, HashMap<EName, List<DublinCoreValue>>>() { @Override public HashMap<EName, List<DublinCoreValue>> apply(HashMap<EName, List<DublinCoreValue>> map, List<CatalogEntry> entries) { if (entries.size() > 0) { final EName property = entries.get(0).getEName(); map.put(property, mlist(entries).map(toDublinCoreValue).value()); } return map; } }); }
@GET // path prefix "bundles" is contained here and not in the path annotation of the class // See https://opencast.jira.com/browse/MH-9768 @Path("bundles/list") @Produces(APPLICATION_JSON) @RestQuery( name = "list", description = "Return a list of all running bundles on the whole cluster.", reponses = { @RestResponse(description = "A list of bundles.", responseCode = HttpServletResponse.SC_OK) }, returnDescription = "The search results, expressed as xml or json.") public Response getVersions() { final Monadics.ListMonadic<Jsons.Val> bundleInfos = mlist(getDb().getBundles()).map( Functions.<BundleInfo, Jsons.Val> co(bundleInfo)); return ok(obj(p("bundleInfos", arr(bundleInfos)), p("count", bundleInfos.value().size()))); }
@Override public boolean matches(ListMonadic<A> m) { return m.value().size() >= 1; }
@Override public boolean matches(ListMonadic<A> m) { return m.value().size() == 0; }
/** Sequence a list of options. [Option a] -> Option [a] */ public static <A> Option<List<A>> sequenceOpt(List<Option<A>> as) { final List<A> seq = mlist(as).foldl(new ArrayList<A>(), new Function2<List<A>, Option<A>, List<A>>() { @Override public List<A> apply(List<A> sum, Option<A> o) { for (A a : o) { sum.add(a); return sum; } return sum; } }); return some(seq); }
@Override public boolean matches(ListMonadic<A> m) { return m.value().size() == 1; }
@Override public B apply(ListMonadic<A> m) { return f.apply(m.value()); } };