@Override public Resolvable resolveChild(URI path) { if (path.segmentCount() == 0 || relativePath().equals(path)) return this; String localeSegment = path.segment(0); ProjectLocale projectLocale = null; if (localeSegment.equals("template")) projectLocale = getTemplate(); else { Locale locale = (Locale) PropertiesFactory.eINSTANCE.createFromString(PropertiesPackage.Literals.LOCALE, localeSegment); if (locale == null) return null; projectLocale = getProjectLocale(locale); } if (path.segmentCount() == 1) return projectLocale; String[] segments = path.segments(); String[] remainder = new String[segments.length - 1]; System.arraycopy(segments, 1, remainder, 0, remainder.length); URI shorterURI = URI.createHierarchicalURI(remainder, null, null); return projectLocale.resolveChild(shorterURI); }
private void newTranslationMatch(File file) { File template = getPropertyScanner().findTemplate(file, getScanConfig()); //don't do anything if the template doesn't exist yet if(template==null || !template.isFile()) return; Locale locale = getPropertyScanner().getLocale(file); ProjectLocale projectLocale = getOrCreateProjectLocale(locale); URI location = calculateLocation(file); //Test if this descriptor is already available PropertyFileDescriptor descriptor = (PropertyFileDescriptor) projectLocale.resolveChild(location); if(descriptor==null) { descriptor = createDescriptor(projectLocale, location); } // load file to initialize statistics; PropertyFile propertyFile = descriptor.loadProperties(); descriptor.setKeys(propertyFile.getProperties().size()); Resolvable<?, ?> resolvable = getProjectVersion().getTemplate().resolveChild(calculateLocation(template)); if (resolvable instanceof PropertyFileDescriptor) { PropertyFileDescriptor templateDescriptor = (PropertyFileDescriptor) resolvable; descriptor.setMaster(templateDescriptor); } descriptor.updatePercentComplete(); }
PropertyFileDescriptor descriptor = (PropertyFileDescriptor) getProjectVersion().getTemplate().resolveChild(location); URI childURI = calculateLocation(entry.getValue()); PropertyFileDescriptor fileDescriptor = (PropertyFileDescriptor) projectLocale.resolveChild(childURI); if(fileDescriptor==null)
@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); }
private static void createMissingChildren(ProjectLocale template, ProjectLocale other) { EList<PropertyFileDescriptor> descriptors = template.getDescriptors(); for (PropertyFileDescriptor descriptor : descriptors) { URI derivedLocation = computeLocaleResourceLocation(other.getLocale(), other.getParent(), descriptor.getLocation()); Resolvable<?, ?> child = other.resolveChild(derivedLocation); if(child==null){ Resolvable<?, ?> folder = getOrCreateFolder(other, derivedLocation.trimSegments(1).segments()); PropertyFileDescriptor localeDescriptor = PropertiesFactory.eINSTANCE.createPropertyFileDescriptor(); localeDescriptor.setMaster(descriptor); localeDescriptor.setVariant(other.getLocale()); localeDescriptor.setLocation(derivedLocation); localeDescriptor.setProjectLocale(other); localeDescriptor.setParent(folder); localeDescriptor.setName(URI.decode(derivedLocation.lastSegment())); } } }