@SuppressWarnings({ "unchecked", "rawtypes" }) private Resolvable<?, Resolvable<?, ?>> getOrCreate(Resolvable<?, Resolvable<?, ?>> currentParent, String child) { Resolvable<?, Resolvable<?, ?>> childObject = (Resolvable<?, Resolvable<?, ?>>) currentParent.getChild(child); if (childObject == null) { childObject = PropertiesFactory.eINSTANCE.createResourceFolder(); childObject.setName(child); EList children = currentParent.getChildren(); children.add(childObject); } return childObject; }
@SuppressWarnings({ "rawtypes", "unchecked" }) public static Resolvable<?, ?> getOrCreateFolder(Resolvable<?, ?> parent, String... segments) { Resolvable currentParent = parent; if (segments == null || segments.length==0) return parent; for (String segment : segments) { //in case there was encoded characters in the segment //see https://github.com/jutzig/jabylon/issues/195 segment = URI.decode(segment); Resolvable child = currentParent.getChild(segment); if (child == null) { child = PropertiesFactory.eINSTANCE.createResourceFolder(); child.setName(segment); currentParent.getChildren().add(child); } currentParent = child; } return (ResourceFolder) currentParent; }
@SuppressWarnings({ "unchecked", "rawtypes" }) public static void addNewLocalizedDescriptor(PropertyFileDescriptor descriptor, ProjectLocale locale) { if (!descriptor.eIsSet(PropertiesPackage.Literals.PROPERTY_FILE_DESCRIPTOR__LOCATION)) throw new IllegalArgumentException("Property File Descriptor location is not set"); ProjectVersion version = locale.getParent(); ProjectLocale templateLocale = version.getTemplate(); URI templateResourceLocation = computeTemplateResourceLocation(locale.getLocale(), descriptor.getLocation(), templateLocale.getLocale(),version); Resolvable<?, ?> resolved = templateLocale.resolveChild(templateResourceLocation); PropertyFileDescriptor template = null; if (resolved instanceof PropertyFileDescriptor) { template = (PropertyFileDescriptor) resolved; } if (template == null) throw new IllegalArgumentException("Template property " + templateResourceLocation + " doesn't exist"); Resolvable container = getOrCreateFolder(locale, descriptor.getLocation().trimSegments(1).segments()); if (container.getChild(descriptor.getLocation().lastSegment()) != null) { PropertyFileDescriptor child = (PropertyFileDescriptor) container.getChild(descriptor.getLocation().lastSegment()); child.setMaster(null); container.getChildren().set(container.getChildren().indexOf(child), descriptor); locale.getDescriptors().remove(child); } else { container.getChildren().add(descriptor); } descriptor.setMaster(template); locale.getDescriptors().add(descriptor); }
Resolvable child = parent.getChild(descriptorPart[i]); if (child == null) { child = PropertiesFactory.eINSTANCE.createResourceFolder(); URI derivedLocation = computeLocaleResourceLocation(locale.getLocale(), version, descriptor.getLocation()); PropertyFileDescriptor translatedDescriptor = (PropertyFileDescriptor) parent.getChild(derivedLocation.lastSegment()); if (translatedDescriptor == null) { translatedDescriptor = PropertiesFactory.eINSTANCE.createPropertyFileDescriptor(); else if (parent.getChild(descriptor.getName()) == null) { parent.getChildren().add(descriptor); descriptor.setName(descriptor.getLocation().lastSegment());