protected List<PropertyPair> createContents() { PropertyFileDescriptor descriptor = model.getObject(); Multimap<String, Review> reviews = reviewModel.getObject(); PropertyFileDescriptor master = descriptor.getMaster(); Map<String, Property> translated = descriptor.loadProperties().asMap(); PropertyFile templateFile = master.loadProperties(); List<PropertyPair> contents = new ArrayList<PropertyPair>(); for (Property property : templateFile.getProperties()) { // IModel<String> bind = model.bind(property.getKey()); // bind.set PropertyPair pair = new PropertyPair(property, translated.remove(property.getKey()),descriptor.getVariant(), descriptor.cdoID()); String key = pair.getKey(); if (mode.apply(pair,reviews.get(key))) contents.add(pair); } for (Property property : translated.values()) { PropertyPair pair = new PropertyPair(null, property,descriptor.getVariant(), descriptor.cdoID()); if (mode.apply(pair,reviews.get(pair.getKey()))) contents.add(pair); } return contents; }
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())); } } }
private Map<String, Object> createOptions(PropertyFileDescriptor descriptor) { Map<String, Object> options = new HashMap<String, Object>(); if (descriptor.getProjectLocale() != null && descriptor.getProjectLocale().getParent() != null && descriptor.getProjectLocale().getParent().getParent() != null) { ProjectVersion version = descriptor.getProjectLocale().getParent(); Project project = version.getParent(); String propertyType = project.getPropertyType(); options.put(PropertiesResourceImpl.OPTION_FILEMODE, propertyType); } return options; }
@Override public ProjectLocale apply(PropertyFileDescriptor object) { ProjectLocale locale = object.getProjectLocale(); if(!object.isMaster()) object = object.getMaster(); if(object!=null) PropertyResourceUtil.removeDescriptor(object); return locale; }; });
@Override public IModel<String> casePropertyFileDescriptor(PropertyFileDescriptor object) { int propertyCount = object.getKeys(); if(object.isMaster()) { String message = NUMBER_OF_KEYS_KEY; message = MessageFormat.format(message, propertyCount); return new StringResourceModel(NUMBER_OF_KEYS_KEY, parent, null, propertyCount); } else { int templateCount = object.getMaster().getKeys(); return new StringResourceModel(TRANSLATION_PERCENTAGE_KEY, parent, null, propertyCount,templateCount,object.getPercentComplete()); } }
private void serveFile(PropertyFileDescriptor fileDescriptor, HttpServletResponse resp) throws IOException { URI path = fileDescriptor.absolutPath(); File file = new File(path.path()); ServletOutputStream outputStream = resp.getOutputStream(); if (!file.exists()) { resp.setStatus(HttpServletResponse.SC_NOT_FOUND); resp.sendError(HttpServletResponse.SC_NOT_FOUND, "Resource " + fileDescriptor.fullPath() + " does not exist"); } else { resp.setContentLength((int) file.length()); resp.setContentType("application/octet-stream"); writeFileToStream(file, outputStream); } outputStream.flush(); }
public List<Document> createDocuments(PropertyFileDescriptor descriptor) { PropertyFile file = descriptor.loadProperties(); List<Document> documents = new ArrayList<Document>(file.getProperties().size()); if(!descriptor.isMaster()) { PropertyFile masterFile = descriptor.getMaster().loadProperties(); masterProperties = masterFile.asMap(); for (Property property : properties) { Document doc = new Document(); ProjectLocale locale = descriptor.getProjectLocale(); ProjectVersion version = locale.getParent(); Project project = version.getParent(); Field uriField = new Field(QueryService.FIELD_URI, descriptor.getLocation().toString(), Store.YES, Index.NOT_ANALYZED); doc.add(uriField); Field pathField = new Field(QueryService.FIELD_FULL_PATH, descriptor.fullPath().toString(), Store.YES, Index.NOT_ANALYZED); doc.add(pathField); CDOID cdoID = descriptor.cdoID(); StringBuilder builder = new StringBuilder(); CDOIDUtil.write(builder, cdoID); Field value = new Field(QueryService.FIELD_VALUE, nullSafe(property.getValue()), Store.YES, Index.ANALYZED); doc.add(value); String templateLocation = descriptor.getMaster() == null ? "" : descriptor.getMaster().getLocation().toString(); Field templateLoc = new Field(QueryService.FIELD_TEMPLATE_LOCATION, templateLocation, Store.YES, Index.NOT_ANALYZED); doc.add(templateLoc);
if (!descriptor.eIsSet(PropertiesPackage.Literals.PROPERTY_FILE_DESCRIPTOR__LOCATION)) throw new IllegalArgumentException("Property File Descriptor location is not set"); for (ProjectLocale locale : version.getChildren()) { Resolvable parent = locale; String[] descriptorPart = descriptor.getLocation().segments(); URI derivedLocation = computeLocaleResourceLocation(locale.getLocale(), version, descriptor.getLocation()); translatedDescriptor.setVariant(locale.getLocale()); translatedDescriptor.setLocation(derivedLocation); translatedDescriptor.setName(derivedLocation.lastSegment()); translatedDescriptor.setMaster(descriptor); if(new File(translatedDescriptor.absoluteFilePath().path()).isFile()) PropertyFile translatedFile = translatedDescriptor.loadProperties(); int size = translatedFile.getProperties().size(); translatedDescriptor.setKeys(size); translatedDescriptor.updatePercentComplete(); else if (parent.getChild(descriptor.getName()) == null) { parent.getChildren().add(descriptor); descriptor.setName(descriptor.getLocation().lastSegment()); version.getTemplate().getDescriptors().add(descriptor); descriptor.updatePercentComplete();
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 master = descriptor.isMaster() ? descriptor : descriptor.getMaster(); if(master==null) return Collections.emptyList(); BooleanQuery query = new BooleanQuery(); query.add(new TermQuery(new Term(QueryService.FIELD_TEMPLATE_LOCATION, master.getLocation().toString())), Occur.MUST); query.add(new TermQuery(new Term(QueryService.FIELD_KEY, pair.getKey())), Occur.MUST); query.add(new TermQuery(new Term(QueryService.FIELD_LOCALE, descriptor.getProjectLocale().getLocale().toString())), Occur.MUST_NOT); continue; String uri = foundDescriptor.toURI().toString(); Locale locale = (Locale) PropertiesFactory.eINSTANCE.createFromString(PropertiesPackage.Literals.LOCALE, document.get(QueryService.FIELD_LOCALE)); MatchResult match = new MatchResult(document.get(QueryService.FIELD_VALUE), locale, uri);
PropertyFileDescriptor descriptor = findDescriptor(makeURI(fileDiff.getNewPath())); if (descriptor != null) { PropertyFile properties = descriptor.loadProperties(); descriptor.setKeys(properties.getProperties().size()); descriptor.updatePercentComplete(); if(descriptor.isMaster()) { EList<PropertyFileDescriptor> descriptors = descriptor.getDerivedDescriptors(); for (PropertyFileDescriptor child : descriptors) { child.updatePercentComplete();
public static void removeDescriptor(PropertyFileDescriptor descriptor) { if (descriptor.isMaster()) { EList<PropertyFileDescriptor> derivedDescriptors = descriptor.getDerivedDescriptors(); for (PropertyFileDescriptor derived : derivedDescriptors) { derived.setProjectLocale(null); Resolvable<?, ?> parent = derived.getParent(); if(parent!=null) { //update the percentage of all derived resources parent.updatePercentComplete(); if(parent.getChildren().size()==1 && parent instanceof ResourceFolder) { deleteFolder((ResourceFolder) parent); } } EcoreUtil.remove(derived); } } else { descriptor.setMaster(null); } Resolvable<?, ?> parent = descriptor.getParent(); if(parent!=null && parent.getChildren().size()==1 && parent instanceof ResourceFolder) deleteFolder((ResourceFolder) parent); EcoreUtil.remove(descriptor); descriptor.getProjectLocale().getDescriptors().remove(descriptor); }
protected List<PropertyPair> createContents() { PropertyFileDescriptor descriptor = model.getObject(); Multimap<String, Review> reviews = reviewModel.getObject(); PropertyFileDescriptor master = descriptor.isMaster() ? descriptor : descriptor.getMaster() ; Map<String, Property> translated = new HashMap<String, Property>(loadProperties(descriptor).asMap()); PropertyFile templateFile = loadProperties(master); List<PropertyPair> contents = new ArrayList<PropertyPair>(); for (Property property : templateFile.getProperties()) { // IModel<String> bind = model.bind(property.getKey()); // bind.set PropertyPair pair = new PropertyPair(property, translated.remove(property.getKey()), descriptor.getVariant(), descriptor.cdoID()); String key = pair.getKey(); if (mode.apply(pair, reviews.get(key))) contents.add(pair); } for (Property property : translated.values()) { PropertyPair pair = new PropertyPair(null, property, descriptor.getVariant(), descriptor.cdoID()); if (mode.apply(pair, reviews.get(pair.getKey()))) contents.add(pair); } return contents; }
URI path = descriptor.absolutPath(); Map<String, Object> options = createOptions(descriptor); if (new File(path.toFileString()).exists()) { PropertyFile original = descriptor.loadProperties(); PropertyDifferentiator differentiator = new PropertyDifferentiator(original); PropertiesResourceImpl resource = new PropertiesResourceImpl(path); resource.getContents().add(file); resource.save(options); descriptor.setKeys(resource.getSavedProperties()); descriptor.updatePercentComplete(); transaction.commit(); List<Notification> diff = differentiator.diff(file); resource.getContents().add(file); resource.save(options); descriptor.setKeys(resource.getSavedProperties()); descriptor.updatePercentComplete(); transaction.commit();
/** * Helper method. Create Map with K=Template Name, V=Descriptor.<br> * * This associates a property descriptor with the path of its respective template for faster lookups.<br> */ private Map<String, PropertyFileDescriptor> loadDescriptorsForLocale(Locale locale) { Map<String, PropertyFileDescriptor> ret = new LinkedHashMap<String, PropertyFileDescriptor>(); List<PropertyFileDescriptor> descriptors = null; /* * Load the List of descriptors available for this locale.<br> * Note that a null locale implies that either no source language was selected, or the * selected source language is the template language.<br> */ if (locale == null) { descriptors = projectVersion.getTemplate().getDescriptors(); } else { descriptors = projectVersion.getProjectLocale(locale).getDescriptors(); } for (PropertyFileDescriptor descriptor : descriptors) { ret.put(descriptor.isMaster() ? descriptor.getLocation().toString() : descriptor.getMaster().getLocation().toString(), descriptor); } return ret; }
@Override protected void onSubmit() { super.onSubmit(); for (FileUpload fileUpload : fileUploadField.getFileUploads()) { PropertyFileDescriptor descriptor = getModel().getObject(); try { PropertyFile file = descriptor.loadProperties(fileUpload.getInputStream()); persist(file); } catch (IOException e) { LOG.error("Failed to retrieve uploaded file for"+descriptor.getLocation(),e); } } }
@Override public PropertyFile load(CDOID key) throws Exception { CDOObject object = view.getObject(key); if (object instanceof PropertyFileDescriptor) { PropertyFileDescriptor descriptor = (PropertyFileDescriptor) object; PropertyFile properties = descriptor.loadProperties(); return properties; } throw new IllegalArgumentException("Object is not a PropertyFileDescriptor: "+object); }
BooleanQuery query = new BooleanQuery(); if(!ProjectLocale.TEMPLATE_LOCALE.equals(language)) // for the template. this field is not set query.add(new TermQuery(new Term(QueryService.FIELD_TEMPLATE_LOCATION, descriptor.getLocation().toString())), Occur.MUST); query.add(new TermQuery(new Term(QueryService.FIELD_LOCALE, language==null ? "" : language.toString())), Occur.MUST); query.add(new TermQuery(new Term(QueryService.FIELD_KEY, key)), Occur.MUST); if (pair.getKey().equals(key) && slave.cdoID().equals(pair.getDescriptorID())) return null; URI originalProjectPath = originalProject.fullPath(); boolean isSameProject = resultPath!=null && resultPath.startsWith(originalProjectPath.path() + "/"); Similarity similarity = new Similarity(masterDoc.get(QueryService.FIELD_VALUE), translationDoc.get(QueryService.FIELD_VALUE), score, masterDoc.get(QueryService.FIELD_FULL_PATH), slave.toURI().toString(), key, hitNumber, isSameProject); return similarity;
for (Review review : descriptor.getReviews()) { if (Review.KIND_SUGGESTION.equals(review.getReviewType())) reviews.put(descriptor.getLocation(), review); Collection<Review> currentReviews = reviews.get(descriptor.getLocation()); descriptor.getReviews().addAll(currentReviews); descriptor.updatePercentComplete();
Map<String, List<Review>> reviews = reviewsAsMap(descriptor.getReviews()); PropertyFileDescriptor master = descriptor.getMaster(); List<Property> templateProperties = getPersistenceService().loadProperties(master).getProperties(); PropertyPair pair = new PropertyPair(property, translatedProperty, descriptor.getVariant(), descriptor.cdoID()); if (filter.apply(pair, reviews.get(pair.getKey()))) { filtered.put(property.getKey(), translated.get(property.getKey()));