package com.dubture.getcomposer.core.collection; import java.io.File; import java.io.IOException; import java.io.Reader; import java.util.LinkedHashMap; import java.util.LinkedList; import com.dubture.getcomposer.core.ComposerPackage; import com.dubture.getcomposer.core.entities.AbstractJsonArray; import com.dubture.getcomposer.json.ParseException; /** * A collection to manage multiple composer packages. * * Can be parsed from e.g. composer/installed.json or composer/installed_dev.json file * * @author Thomas Gossmann <gos.si> */ public class ComposerPackages extends AbstractJsonArray<ComposerPackage> { public ComposerPackages() { } public ComposerPackages(Object json) { fromJson(json); } public ComposerPackages(String json) throws ParseException { fromJson(json); } public ComposerPackages(File file) throws IOException, ParseException { fromJson(file); } public ComposerPackages(Reader reader) throws IOException, ParseException { fromJson(reader); } @SuppressWarnings("rawtypes") protected void doParse(Object obj) { clear(); if (obj instanceof LinkedHashMap) { add(new ComposerPackage(obj)); } else if (obj instanceof LinkedList) { LinkedList array = (LinkedList) obj; for (Object entry : array) { if (entry instanceof LinkedHashMap) { add(new ComposerPackage(entry)); } } } } public void addAll(ComposerPackages packages) { for (ComposerPackage pkg : packages) { add(pkg); } } public void removeAll(ComposerPackages packages) { for (ComposerPackage pkg : packages) { remove(pkg); } } public boolean has(String name) { for (ComposerPackage pkg : values) { if (pkg.getName().equals(name)) { return true; } } return false; } }