protected void applyLocaleList(List<String> object, IModel<ProjectVersion> input) {
Set<String> locales = new HashSet<String>(object);
ProjectVersion version = input.getObject();
List<ProjectLocale> projectLocales = version.getChildren();
List<ProjectLocale> toDelete = new ArrayList<>();
for (Iterator<ProjectLocale> iterator = projectLocales.iterator(); iterator.hasNext();) {
ProjectLocale projectLocale = iterator.next();
if(projectLocale.isMaster())
continue;
if(!locales.remove(projectLocale.getName())) {
toDelete.add(projectLocale);
}
}
for (ProjectLocale projectLocale : toDelete) {
LOGGER.info("Deleting ProjectLocale {} from {}",projectLocale.getName(), version.fullPath());
EcoreUtil.delete(projectLocale, true);
}
for (String locale : locales) {
ProjectLocale projectLocale = PropertiesFactory.eINSTANCE.createProjectLocale();
projectLocale.setLocale((Locale) PropertiesFactory.eINSTANCE.createFromString(PropertiesPackage.Literals.LOCALE, locale));
LOGGER.info("Adding ProjectLocale {} to {}",projectLocale.getName(), version.fullPath());
PropertyResourceUtil.addNewLocale(projectLocale, input.getObject());
}
}