Valeur dans un attribut importé

Bonjour,

J’aimerais un exemple de code Java pour forcer une valeur dans un attribut importé.
Je m’explique :

J’ai un objet Adresse et un objet Ville.
Une Adresse contient une Ville dans un attribut qui affiche le nom de cette ville.
Mon instanciation d’Adresse n’a pas encore de Ville.
J’ai plusieurs villes instanciées dans ma liste de Ville comme “Lausanne”, “Londre”, “Paris” (string dans l’attribut nomVille de mes instanciations de Ville) et je souhaite attribuer l’une d’elle à l’attribut de de mon Adresse (depuis le code java de Adresse).

Pour setter un attribut non-importé dans Adresse (par exemple le nom de rue), j’utilise dans Adresse.java :
this.setFieldValue(“AdresseNomRue”, “Rue du test”);

Et j’aimerais donc utiliser dans ce cas :
this.setFieldValue(“AdresseNomVille”, “Lausanne”);
ou un truc du genre :
this.setFieldValue(“AdresseNomVille”, getGrant().getTmpObject(“Ville”).getField(“nomVille”).setFilter(“Lausanne”));

Quel code devrais-je utiliser dans pour ce cas là ?

Cordialement,

William

Si je comprends bien vous avez un objet “Ville” et vous souhaitez pouvoir créer une nouvelle ville si besoin sur l’objet qui référence cette ville.

Cela se fait nativement via le menu “Créer” de votre référence:
image

Il faut bien sûr que votre user ait les droits de création sur l’objet référencé.

En tout cas cela ne se fait pas en saisissant dans un objet B une donnée appartenant à un objet A référencé dans B.

PS: Si on parle de code serveur, c’est l’attribut référence (i.e. la foreign key) que vous devez setter pour valoriser une référence. Il est inutile de valoriser les valeurs des attributs ramenés par jointure, ça c’est Simplicité qui s’en charge (via la référence).

Si je comprends bien vous avez un objet “Ville” et vous souhaitez pouvoir créer une nouvelle ville si besoin sur l’objet qui référence cette ville.

Non, je souhaite assigner une ville qui existe déjà.

Si on parle de code serveur, c’est l’attribut référence (i.e. la foreign key ) que vous devez setter pour valoriser une référence. Il est inutile de valoriser les valeurs des attributs ramenés par jointure, ça c’est Simplicité qui s’en charge (via la référence).

Oui je parle bien de code serveur.
Pouvez-vous me donner un exemple en Java qui comprent la récuperation de la foreign key depuis l’objet Adresse ?

Vous avez des exemples de code de recherche ici: https://docs.simplicite.io/documentation/01-core/basic-code-examples.md#searching

Ensuite il suffit d’affecter le row ID du record qui vous cherchez à votre attribut foreign key, genre: setFieldValue("myVilleId", ville.getRowId())

Donc si je comprend bien, l’exemple ressemblerais à ce code.
Que dois-je modifier pour le faire fonctionner ?

ObjectDB v = getGrant().getTmpObject(“Ville”);

   v.resetFilters();
		for (String[] row : v.search(false)) {
			v.setValues(row);
			String val = v.getField("nomVille").getValue();
			if(val.equals("Lausanne"))
			{
				setFieldValue("adresseVilleId", v.getRowId());
			}
		}