We apologize for untranslated text, you can use the Google Translation button to get an automatic translation of the web page in the language of your choice.

[Résolu]Changement de catégorie d'un FileDocument (programmatique)

Kévin Imbert · on 5/28/19 at 9:33 AM

Bonjour,

Je souhaite, de manière programmatique, changer la catégorie d'une liste de FileDocument. Pour se faire, je récupère toutes mes publications via le "getAllPublicationSet", je boucle sur chacune de mes publications, modifie la catégorie souhaitée et je sauvegarde grâce au "checkUpdate" (problème à part, si je fais le checkAndPerfomUpdate j'ai une exception noUpdateException...).

Suite à ça, ma publication contient bien la catégorie que je viens de lui assigner mais si je regarde en back office dans l'arborescence, la publication se trouve toujours dans l'ancienne catégorie.

Auriez-vous une idée ?

 

Mon code en exemple :

Category catPlano = PlanogramService.planoCat;
Set<Publication> newPubs = catPlano.getAllPublicationSet();
for(Publication newPub: newPubs) {
	ArrayList<Category> categories = new ArrayList<>(Arrays.asList(newPub.getCategories()));
	categories.remove(catPlano);
	categories.add(PlanogramService.inProgressCat);
	newPub.setCategories(null);
	newPub.setCategories(categories.toArray(new Category[categories.size()]));
	ControllerStatus cs = newPub.checkUpdate(channel.getDefaultAdmin());
				
	if(!cs.isOK()) {
		logFile.append(JcmsUtil.glp(channel.getCurrentUserLang(), Constante.ERR5, PlanogramService.inProgressCat, newPub.getTitle()) + br);
		throw new IOException(JcmsUtil.glp(channel.getCurrentUserLang(), Constante.ERR5, PlanogramService.inProgressCat, newPub.getTitle()));
	}
}
0 pts
Michel Remacle · on 5/28/19 at 10:24 AM

Bonjour,

Il faut faire un clone de la publication pour pouvoir la mettre à jour.

Genre comme ça :

Category catPlano = PlanogramService.planoCat;
Set<Publication> newPubs = catPlano.getAllPublicationSet();
for(Publication newPub: newPubs) {
	ArrayList<Category> categories = new ArrayList<>(Arrays.asList(newPub.getCategories()));
	categories.remove(catPlano);
	categories.add(PlanogramService.inProgressCat);

Publication clone = (Publication)newPub.getUpdateInstance();
clone.setCategories(categories.toArray(new Category[categories.size()]));

	ControllerStatus cs = clone.checkUpdate(channel.getDefaultAdmin());

	if(!cs.isOK()) {
		logFile.append(JcmsUtil.glp(channel.getCurrentUserLang(), Constante.ERR5, PlanogramService.inProgressCat, newPub.getTitle()) + br);
		throw new IOException(JcmsUtil.glp(channel.getCurrentUserLang(), Constante.ERR5, PlanogramService.inProgressCat, newPub.getTitle()));
	} else {
clone.performUpdate(...);
        }
}
1 pt
Kévin Imbert · on 5/28/19 at 10:35 AM

En effet, l'exception aurait du me mettre la puce à l'oreille.

 

Merci beaucoup !

#1

De rien ;)

Michel Remacle · on 5/28/19 at 10:37 AM
0 pts