Author: athimel Date: 2014-04-18 19:22:04 +0200 (Fri, 18 Apr 2014) New Revision: 3076 Url: http://forge.nuiton.org/projects/topia/repository/revisions/3076 Log: organize doc Added: trunk/src/site/rst/user/ordered_vs_indexed_migration.rst Removed: trunk/src/site/rst/migrate_to_3.0_ordered_vs_indexed_migration.rst Modified: trunk/src/site/rst/migrate_to_3.0.rst trunk/src/site/site_fr.xml Modified: trunk/src/site/rst/migrate_to_3.0.rst =================================================================== --- trunk/src/site/rst/migrate_to_3.0.rst 2014-04-18 16:28:46 UTC (rev 3075) +++ trunk/src/site/rst/migrate_to_3.0.rst 2014-04-18 17:22:04 UTC (rev 3076) @@ -70,14 +70,14 @@ Vous devez migrer votre modèle zargo depuis la beta-3 suite à une confusion entre ordered et indexed (stéréotypes à placer sur une association-end d'un lien entre deux entités). - * Le stéréotype "indexed" est déprécié, vous devez le remplacer par "ordered" - * Le stéréotype "ordered" maintient l'ordre d'insertion en base, il faut donc vous assurer qu'une colonne - _idx est bien présente dans la base et au besoin écrire la migration nécessaire pour ajouter la colonne - et fixer les indexes manquants (en commençant à 0). - * Les types des collections générées ont changés afin d'utiliser un contrat plus proche du modèle (selon - que les stéréotypes "unique" et/ou "ordered" ont été posés). + * Le stéréotype "indexed" est déprécié, vous devez le remplacer par l'attribut "ordered" + * L'attribut (ou le stéréotype) "ordered" maintient l'ordre d'insertion en base, il faut donc vous assurer qu'une + colonne <champ>_idx est bien présente dans la base de donnée et au besoin écrire la migration nécessaire (voir + `le guide dédié`_) pour ajouter la colonne et fixer les indexes manquants (en commençant à 0). + * Les types des collections générées ont changé afin d'utiliser un contrat plus proche du modèle (selon la présence + des stéréotypes "unique" et/ou "ordered"). -Vous trouverez des examples de scripts de migration dans la `section dediée`_. +NB : La documentation contient des `examples de migration pour la refonte des indexed/ordered`_. Code déprécié ============= @@ -312,7 +312,8 @@ grep -m 1 -nr 'TopiaContextFactory.CONFIG_' . | awk -F ':' '{print $1}' | xargs sed -i -e 's/TopiaContextFactory.CONFIG_/TopiaConfigurationConstants.CONFIG_/g' -.. _section dediée: ./migrate_to_3.0_ordered_vs_indexed_migration.html +.. _le guide dédié: ./user/ordered_vs_indexed_migration.html +.. _examples de migration pour la refonte des indexed/ordered: ./user/ordered_vs_indexed_migration.html .. |RECOMMENDED| image:: recommended.png .. |MANDATORY| image:: mandatory.png Deleted: trunk/src/site/rst/migrate_to_3.0_ordered_vs_indexed_migration.rst =================================================================== --- trunk/src/site/rst/migrate_to_3.0_ordered_vs_indexed_migration.rst 2014-04-18 16:28:46 UTC (rev 3075) +++ trunk/src/site/rst/migrate_to_3.0_ordered_vs_indexed_migration.rst 2014-04-18 17:22:04 UTC (rev 3076) @@ -1,132 +0,0 @@ -.. - -.. * #%L -.. * ToPIA -.. * $Id$ -.. * $HeadURL$ -.. * %% -.. * Copyright (C) 2004 - 2014 CodeLutin -.. * %% -.. * This program is free software: you can redistribute it and/or modify -.. * it under the terms of the GNU Lesser General Public License as -.. * published by the Free Software Foundation, either version 3 of the -.. * License, or (at your option) any later version. -.. * -.. * This program is distributed in the hope that it will be useful, -.. * but WITHOUT ANY WARRANTY; without even the implied warranty of -.. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -.. * GNU General Lesser Public License for more details. -.. * -.. * You should have received a copy of the GNU General Lesser Public -.. * License along with this program. If not, see -.. * <http://www.gnu.org/licenses/lgpl-3.0.html>. -.. * #L% -.. - - -============================================= -Migration vers ToPIA 3.0 - ordered vs indexed -============================================= - - -Vous devez migrer votre modèle zargo depuis la beta-3 suite à une confusion entre ordered et indexed (stéréotypes -à placer sur une association-end d'un lien entre deux entités). - - * Le stéréotype "indexed" est déprécié, vous devez le remplacer par "ordered" - * Le stéréotype "ordered" maintient l'ordre d'insertion en base, il faut donc vous assurer qu'une colonne - _idx est bien présente dans la base et au besoin écrire la migration nécessaire pour ajouter la colonne - et fixer les indexes manquants (en commençant à 0). - * Les types des collections générées ont changés afin d'utiliser un contrat plus proche du modèle (selon - que les stéréotypes "unique" et/ou "ordered" ont été posés). - - -Exemples de scripts de migration SQL -==================================== - -Cas simple d'une relation 1..n ------------------------------- - -:: - - -- - -- relation is : Car -----[*]- Tyre - -- - - -- Add index to be able to order tyres - ALTER TABLE tyre ADD COLUMN car_idx integer; - - -- Generate unique car_idx according to topiaCreateDate and topiaId - UPDATE tyre SET car_idx = ( - SELECT COUNT(topiaId) - FROM tyre t - WHERE t.car = tyre.car - AND (t.topiaCreateDate || t.topiaId) < (tyre.topiaCreateDate || tyre.topiaId) - ); - - -Cas d'une relation 1..n vers une entité abstraite -------------------------------------------------- - -Note : cela n'est nécessaire que pour la stratégie d'héritage union-subclass. - - -:: - - - -- - -- relation is : Person -----[*]- Pet (abstract) - -- ^ - -- | - -- ----------- - -- | | - -- Cat Dog - -- - - -- create a temporary table to be able to orders cats and dogs - CREATE TABLE person_to_pet_tmp ( - person character varying(255) NOT NULL, - type character varying(255) NOT NULL, - petTopiaId character varying(255) NOT NULL, - petTopiaCreateDate timestamp without time zone, - person_idx integer - ); - - -- populate table with cats - INSERT INTO person_to_pet_tmp (person, type, petTopiaId, petTopiaCreateDate) - SELECT person, 'cat', topiaId, topiaCreateDate FROM cat; - - -- populate table with dogs - INSERT INTO person_to_pet_tmp (person, type, petTopiaId, petTopiaCreateDate) - SELECT person, 'dog', topiaId, topiaCreateDate FROM dog; - - -- compute index for cats and dogs together - UPDATE person_to_pet_tmp SET person_idx = ( - SELECT COUNT(ptpt.person) - FROM person_to_pet_tmp ptpt - WHERE ptpt.person = person_to_pet_tmp.person - AND (ptpt.petTopiaCreateDate || ptpt.petTopiaId) < (person_to_pet_tmp.petTopiaCreateDate || person_to_pet_tmp.petTopiaId) - ); - - -- add index to be able to order cats - ALTER TABLE cat ADD COLUMN person_idx integer; - - -- add indexes to cats - UPDATE cat SET person_idx = ( - SELECT person_idx - FROM person_to_pet_tmp ptpt - WHERE ptpt.petTopiaId = cat.topiaId - ); - - -- add index to be able to order dogs - ALTER TABLE dog ADD COLUMN person_idx integer; - - -- add indexes to dogs - UPDATE dog SET person_idx = ( - SELECT person_idx - FROM person_to_pet_tmp ptpt - WHERE ptpt.petTopiaId = dog.topiaId - ); - - -- remove temporary table - DROP TABLE person_to_pet_tmp; - - - Copied: trunk/src/site/rst/user/ordered_vs_indexed_migration.rst (from rev 3075, trunk/src/site/rst/migrate_to_3.0_ordered_vs_indexed_migration.rst) =================================================================== --- trunk/src/site/rst/user/ordered_vs_indexed_migration.rst (rev 0) +++ trunk/src/site/rst/user/ordered_vs_indexed_migration.rst 2014-04-18 17:22:04 UTC (rev 3076) @@ -0,0 +1,132 @@ +.. - +.. * #%L +.. * ToPIA +.. * $Id$ +.. * $HeadURL$ +.. * %% +.. * Copyright (C) 2004 - 2014 CodeLutin +.. * %% +.. * This program is free software: you can redistribute it and/or modify +.. * it under the terms of the GNU Lesser General Public License as +.. * published by the Free Software Foundation, either version 3 of the +.. * License, or (at your option) any later version. +.. * +.. * This program is distributed in the hope that it will be useful, +.. * but WITHOUT ANY WARRANTY; without even the implied warranty of +.. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +.. * GNU General Lesser Public License for more details. +.. * +.. * You should have received a copy of the GNU General Lesser Public +.. * License along with this program. If not, see +.. * <http://www.gnu.org/licenses/lgpl-3.0.html>. +.. * #L% +.. - + +============================================= +Migration vers ToPIA 3.0 - ordered vs indexed +============================================= + + +Vous devez migrer votre modèle zargo depuis la beta-3 suite à une confusion entre ordered et indexed (stéréotypes +à placer sur une association-end d'un lien entre deux entités). + + * Le stéréotype "indexed" est déprécié, vous devez le remplacer par l'attribut "ordered" + * L'attribut (ou le stéréotype) "ordered" maintient l'ordre d'insertion en base, il faut donc vous assurer qu'une + colonne <champ>_idx est bien présente dans la base de donnée et au besoin écrire la migration nécessaire (voir ci- + dessous) pour ajouter la colonne et fixer les indexes manquants (en commençant à 0). + * Les types des collections générées ont changé afin d'utiliser un contrat plus proche du modèle (selon la présence + des stéréotypes "unique" et/ou "ordered"). + + +Exemples de scripts de migration SQL +==================================== + +Cas simple d'une relation 1..n +------------------------------ + +:: + + -- + -- relation is : Car -----[*]- Tyre + -- + + -- Add index to be able to order tyres + ALTER TABLE tyre ADD COLUMN car_idx integer; + + -- Generate unique car_idx according to topiaCreateDate and topiaId + UPDATE tyre SET car_idx = ( + SELECT COUNT(topiaId) + FROM tyre t + WHERE t.car = tyre.car + AND (t.topiaCreateDate || t.topiaId) < (tyre.topiaCreateDate || tyre.topiaId) + ); + + +Cas d'une relation 1..n vers une entité abstraite +------------------------------------------------- + +Note : cela n'est nécessaire que pour la stratégie d'héritage union-subclass. + + +:: + + + -- + -- relation is : Person -----[*]- Pet (abstract) + -- ^ + -- | + -- ----------- + -- | | + -- Cat Dog + -- + + -- create a temporary table to be able to orders cats and dogs + CREATE TABLE person_to_pet_tmp ( + person character varying(255) NOT NULL, + type character varying(255) NOT NULL, + petTopiaId character varying(255) NOT NULL, + petTopiaCreateDate timestamp without time zone, + person_idx integer + ); + + -- populate table with cats + INSERT INTO person_to_pet_tmp (person, type, petTopiaId, petTopiaCreateDate) + SELECT person, 'cat', topiaId, topiaCreateDate FROM cat; + + -- populate table with dogs + INSERT INTO person_to_pet_tmp (person, type, petTopiaId, petTopiaCreateDate) + SELECT person, 'dog', topiaId, topiaCreateDate FROM dog; + + -- compute index for cats and dogs together + UPDATE person_to_pet_tmp SET person_idx = ( + SELECT COUNT(ptpt.person) + FROM person_to_pet_tmp ptpt + WHERE ptpt.person = person_to_pet_tmp.person + AND (ptpt.petTopiaCreateDate || ptpt.petTopiaId) < (person_to_pet_tmp.petTopiaCreateDate || person_to_pet_tmp.petTopiaId) + ); + + -- add index to be able to order cats + ALTER TABLE cat ADD COLUMN person_idx integer; + + -- add indexes to cats + UPDATE cat SET person_idx = ( + SELECT person_idx + FROM person_to_pet_tmp ptpt + WHERE ptpt.petTopiaId = cat.topiaId + ); + + -- add index to be able to order dogs + ALTER TABLE dog ADD COLUMN person_idx integer; + + -- add indexes to dogs + UPDATE dog SET person_idx = ( + SELECT person_idx + FROM person_to_pet_tmp ptpt + WHERE ptpt.petTopiaId = dog.topiaId + ); + + -- remove temporary table + DROP TABLE person_to_pet_tmp; + + + Modified: trunk/src/site/site_fr.xml =================================================================== --- trunk/src/site/site_fr.xml 2014-04-18 16:28:46 UTC (rev 3075) +++ trunk/src/site/site_fr.xml 2014-04-18 17:22:04 UTC (rev 3076) @@ -94,7 +94,6 @@ <menu name="Documentation" inherit="top"> <item name="Présentation" href="index.html" /> - <item name="Migration vers ToPIA 3.0" href="migrate_to_3.0.html" /> <item name="Utilisation" href="user/howto.html" /> <item name="Génération des modèles" href="user/ModelGeneration.html"/> <item name="Tag values" href="user/tagvalues.html" /> @@ -105,14 +104,16 @@ <item name="Démarrer avec ToPIA et Maven" href="user/start.html" /> <item name="Commencer à développer avec l'API ToPIA" href="user/start_using_api.html" /> <item name="Étendre le modèle" href="user/extend_model.html" /> - <item name="Continer le développement" href="user/continue_devel.html" /> + <item name="Continuer le développement" href="user/continue_devel.html" /> + <item name="Migration vers ToPIA 3.0" href="migrate_to_3.0.html" /> + <item name="Examples de migration pour le refonte des indexed/ordered" href="user/ordered_vs_indexed_migration.html" /> </menu> <menu name="Développeurs"> <item name="Todo" href="devel/Todo.html"/> - <item name="Mapping hibernate" href="devel/HibernateMapping.html"/> + <item name="Mapping Hibernate" href="devel/HibernateMapping.html"/> <item name="Isolation" href="devel/Isolation.html"/> - <item name="Schema migration" href="devel/SchemaMigration.html"/> + <item name="Migration de schéma" href="devel/SchemaMigration.html"/> <item name="Sécurité" href="devel/security.html"/> <item name="TopiaContextFactory" href="devel/Devel.html"/> <item name="Projets similaires" href="devel/project.html"/>