Mapping SQLElementNames.xml

Répondre
doc
Messages : 187
Enregistré le : dim. févr. 26, 2017 4:39 pm

sam. juil. 29, 2017 4:11 pm

Bonjour,

Je suis en train de mettre à jour mes modules pour la version 1.5, dans cette version est apparue le fichier SQLElementNames pour le mapping, j'ai saisi le concept mais certaines de mes traductions ne sont pas prises en compte.
J'ai un element principal SITE_CLIENT initialisé ainsi:

Code : Tout sélectionner

public class CustomerSiteSQLElement extends ModuleElement {
	public static final String ELEMENT_CODE = "multisites.element";

	public CustomerSiteSQLElement(AbstractModule module) {
		super(module, Module.MODULE_TABLENAME);
		this.setL18nLocation(CustomerSiteSQLElement.class);
	}

	...

 	@Override
	protected String createCode() {
		return ELEMENT_CODE;
	}


Cet element est traduit correctement mais c'est le seul, les autres ne le sont pas, ci-dessous mon fichier xml (org.openconcerto.modules.multisites.element étant le package de l'élement GESTIONNAIRE_SITE)

Code : Tout sélectionner

<translations>
	<element refid="multisites.element" nameClass="masculine" name="site client" namePlural="sites client" />
	<element refid="org.openconcerto.modules.multisites.element/GESTIONNAIRE_SITE" nameClass="masculine"
		name="gestionnaire de site" namePlural="gestionnaires de site" />
</translations>
Je pense avoir oublié une déclaration qqpart, mais je ne vois pas laquelle.

D'autre part, est ce que l'appel à setExcludeUndefined(false) permet bien de récupérer les enregistrements "indéfinis", malgré cet appel dans un transformChecked(SQLSelect sel) j'ai toujours dans la requete la condition qui exclue les undéfinis :

Code : Tout sélectionner

WHERE ("XXX"."ID" <> 1) 
extrait du code:

Code : Tout sélectionner

comboSite.getRequest().setSelectTransf(new ITransformer<SQLSelect, SQLSelect>() {
    @Override
    public SQLSelect transformChecked(SQLSelect sel) {
        SQLElement managersElement = Configuration.getInstance().getDirectory().getElement("GESTIONNAIRE_SITE");
        SQLTable managersTable = managersElement.getListRequest().getPrimaryTable();
        SQLTable siteTable = comboSite.getRequest().getPrimaryTable();
        TableRef aTableRef = new AliasedTable(managersTable, "g");
        Where joinClause = new Where(siteTable.getField("ID_CLIENT"), "=", aTableRef.getField("ID_CLIENT_SITES"));
        final SQLSelectJoin join = sel.addJoin("LEFT", aTableRef, joinClause);
        Where w = new Where(siteTable.getField("ID_CLIENT"), "=", rowClient.getID());
        w = w.or(new Where(siteTable.getField("ID_CLIENT_GERANT"), "=", rowClient.getID()));
        w = w.or(new Where(join.getJoinedTable().getField("ID_CLIENT_MANAGER"), "=", rowClient.getID()));
        //w = w.or(new Where(siteTable.getField("ID"), "=", siteTable.getUndefinedID()));
        join.setWhere(w);
        
        sel.setDistinct(true);
        sel.setExcludeUndefined(false); //TODO: Voir pourquoi les undefined sont toujours exclut après cet appel
        
        return sel;
        }
    });
Merci.
Répondre