if (v.getB().search(true, n -> "binding".equals(n.getName())).count() < v.getD().search(true, n -> "binding".equals(n.getName())).count()) { NodeBuilder config = fac.loadFromFile(v.getA()); NodeBuilder binding = v.getD().search(true, n -> "binding".equals(n.getName())).filter(n -> n.hasChild(ch -> "machine".equals(ch.getName()) && "hkvnode316.cz.tmo".equals(ch.getTextContent()))).findAny().get(); binding.searchFirstByName("machine").setTextContent("hkvnode310.cz.tmo"); config.search(true, n -> "bindings".equals(n.getName())).findAny().get().appendChild( binding.copy() ); fac.renderNode(config, v.getA()); NodeBuilder bindings1 = v.getB().search(true, n -> "bindings".equals(n.getName())).findAny().get(); NodeBuilder bindings2 = v.getD().search(true, n -> "bindings".equals(n.getName())).findAny().get(); bindings1.search(true, n -> "machine".equals(n.getName())).forEach(n -> n.setTextContent(null));; bindings2.search(true, n -> "machine".equals(n.getName())).forEach(n -> n.setTextContent(null));; final int index = i; if (!nvPairs1.get(i).equals(nvPairs2.get(i))) { System.out.println(v.getA() + " " + i + " " + nvPairs1.get(i).getFirstDiff(nvPairs2.get(i))); NodeBuilder config = fac.loadFromFile(v.getA()); NodeBuilder binding = config. binding.removeChild(nvPairs); binding.appendChild(nvPairs2.get(i)); fac.renderNode(config, v.getA()); System.out.println(v.getA()); exception.printStackTrace();
public void removeDuplicateServiceVariables() { Set<String> duplicated = getDuplicateServiceVariables(); Map<V4<String, String, String, String>, List<V4<V2<Environment, Archive>, String, String, NodeBuilder>>> toRemove = configs. entrySet().stream(). map(v -> v.getValue(). search("services"). map(s -> s.getChildren().stream()). flatMap(n -> n).map(x -> x.search(true, "NVPairs").filter(n -> INSTANCE_VARIABLES.contains(n.getAttribute("name"))) .map(c -> c.search(true, "name").map(nn -> T.V(v.getKey(), nn.getParent().getParent().getXPath(), nn.getTextContent(), nn.getParent()))))). // search all name elements from NVPairs flatMap(n -> n). flatMap(n -> n). flatMap(n -> n). filter(v -> duplicated.contains(v.getC())). collect(Collectors.groupingBy(t -> (V4<String, String, String, String>)T.V(t.getA().getA().getValue(), t.getA().getB().getValue(), t.getB(), t.getC()))); toRemove. entrySet().stream(). forEach(v -> { v.getValue().stream().skip(1).forEach(n -> n.getD().getParent().removeChild(n.getD())); }); }
@Override public boolean equals(Object obj) { if (this == obj) return true; if (!super.equals(obj)) return false; if (getClass() != obj.getClass()) return false; V5<?,?,?,?,?> other = (V5<?,?,?,?,?>) obj; if (e == null) { if (other.e != null) return false; } else if (!e.equals(other.e)) return false; return true; } }
stream(). filter(v -> v.getValue().size() > 1). map(v -> v.getKey().getD()). collect(Collectors.toSet());
public static void main(String[] args) { ArgumentParser argParser = ArgumentParsers.newArgumentParser("EAR Version Updater", true, "-") .description("Updates version in ear files in given directory."); argParser.addArgument("-directory").type(String.class).required(true).help("Path to directory with ears"); argParser.addArgument("-version").type(String.class).required(true).help("Version that will be written in Tibco.xml"); Namespace res = argParser.parseArgsOrFail(args); String directory = res.get("directory"); String version = res.getString("version"); new FileSearcher().searchFiles(Paths.get(directory), "glob:**/*.ear", false). stream().parallel(). map(p -> T.V(p, new LoadZipFile().load(p))). map(v -> T.V(v.getA(), getVersion(v), v.getB())). filter(v -> v.getB().isPresent()). map(v -> T.V(v.getA(), new XmlBuilderFactory().parseDocument(new ByteArrayInputStream(v.getB().get().getB())), v.getB(), v.getC())). forEach(v -> { v.getB().search("version").forEach(vnode -> { System.out.println(v.getA() + " " + vnode.getTextContent() + " -> " + version); vnode.setTextContent(version); }); byte[] bytes = v.getB().toString().getBytes(); V3<String, byte[], ZipEntry> zipFileEntry = v.getC().get(); zipFileEntry.setB(bytes); new LoadZipFile().updateFile(v.getA(), v.getD()); }); }
public static <A, B, C, D> V4<A, B, C, D> copyAndAdd(V3<A, B, C> v, D d) { return new V4<A, B, C, D>(v.getA(), v.getB(), v.getC(), d); } public static <A, B, C, D, E> V5<A, B, C, D, E> copyAndAdd(V4<A, B, C, D> v, E e) {
public static <A, B, C, D> V4<A, B, C, D> V(A a, B b, C c, D d) { return new V4<A, B, C, D>(a, b, c, d); } public static <A, B, C, D, E> V5<A, B, C, D, E> V(A a, B b, C c, D d, E e) {
@Override public int hashCode() { final int prime = 31; int result = super.hashCode(); result = prime * result + ((e == null) ? 0 : e.hashCode()); return result; } @Override
@Override public String toString() { return super.toString() + ";E="+e; } @Override