All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.vertigo.quarto.plugins.publisher.environment.registries.PublisherGrammar Maven / Gradle / Ivy

There is a newer version: 0.9.4
Show newest version
/**
 * vertigo - simple java starter
 *
 * Copyright (C) 2013, KleeGroup, [email protected] (http://www.kleegroup.com)
 * KleeGroup, Centre d'affaire la Boursidiere - BP 159 - 92357 Le Plessis Robinson Cedex - France
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package io.vertigo.quarto.plugins.publisher.environment.registries;

import io.vertigo.core.definition.dsl.entity.Entity;
import io.vertigo.core.definition.dsl.entity.EntityBuilder;
import io.vertigo.core.definition.dsl.entity.EntityGrammar;

/**
 * Grammaire de publisher.
 *
 * @author npiedeloup
 */
final class PublisherGrammar {
	/**
	 * Clé des FIELD_DEFINITION de type PK utilisés dans les DT_DEFINITION.
	 */
	/** String field. */
	public static final String STRING_FIELD = "stringField";
	/** Boolean field. */
	public static final String BOOLEAN_FIELD = "booleanField";
	/** Image field. */
	public static final String IMAGE_FIELD = "imageField";
	/** Data field. */
	public static final String DATA_FIELD = "dataField";
	/** List field. */
	public static final String LIST_FIELD = "listField";

	private static final String PUB_DEFINITION_META_DEFINITION = "PublisherDefinition";
	private static final String NODE_DEFINITION_META_DEFINITION = "PublisherNode";
	private static final String NODE_FIELD_META_DEFINITION = "DataField";
	private static final String NODE_DATA_FIELD_META_DEFINITION = "NodeField";

	/**Définition d'un DT.*/
	static final Entity publisherDefinition;
	/**Définition d'un domain.*/
	static final Entity publisherNodeDefinition;

	/**Définition des champs.*/
	private static final Entity publisherFieldDefinition;
	/**Définition des champs typés.*/
	private static final Entity publisherDataFieldDefinition;

	/** Publisher Grammar instance. */
	public static final EntityGrammar GRAMMAR;
	/**
	 * Initialisation des métadonnées permettant de décrire le métamodèle de Dynamo.
	 */
	static {
		//On a une relation circulaire
		//On conserve donc une référence sur le builder
		final EntityBuilder builder = new EntityBuilder(NODE_DEFINITION_META_DEFINITION);
		publisherFieldDefinition = new EntityBuilder(NODE_FIELD_META_DEFINITION).build();

		publisherDataFieldDefinition = new EntityBuilder(NODE_DATA_FIELD_META_DEFINITION)//
				.addField("type", builder.build().getLink(), true)
				.build();

		publisherNodeDefinition = builder//
				.addFields(STRING_FIELD, publisherFieldDefinition, false) // facultative
				.addFields(BOOLEAN_FIELD, publisherFieldDefinition, false) // facultative
				.addFields(IMAGE_FIELD, publisherFieldDefinition, false) //facultative
				.addFields(DATA_FIELD, publisherDataFieldDefinition, false) //facultative
				.addFields(LIST_FIELD, publisherDataFieldDefinition, false) //facultative
				.build();

		//--
		publisherDefinition = new EntityBuilder(PUB_DEFINITION_META_DEFINITION)
				.addField("root", publisherNodeDefinition.getLink(), true)
				.build();
		//-----
		GRAMMAR = new EntityGrammar(publisherDefinition,
				publisherNodeDefinition,
				publisherFieldDefinition,
				publisherDataFieldDefinition);
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy