diff options
author | Adrian Sacchi | 2014-01-27 13:02:24 +0000 |
---|---|---|
committer | Judith Gull | 2014-01-31 10:49:18 +0000 |
commit | 4eb520133878276c8299558eee91519c8580cdb0 (patch) | |
tree | a74259d3857cff119c8926a47c19bdf911f1193d | |
parent | 4c3805fd5dd08dd0a68dda2b3ccd241d756b4505 (diff) | |
download | org.eclipse.scout.rt-4eb520133878276c8299558eee91519c8580cdb0.tar.gz org.eclipse.scout.rt-4eb520133878276c8299558eee91519c8580cdb0.tar.xz org.eclipse.scout.rt-4eb520133878276c8299558eee91519c8580cdb0.zip |
bug 425881: [Spec] Describe Types
https://bugs.eclipse.org/bugs/show_bug.cgi?id=425881
Change-Id: I611ee692fbda64561f500f2c997254b51a63c878
Signed-off-by: Adrian Sacchi <adrian.sacchi@bsiag.com>
Reviewed-on: https://git.eclipse.org/r/21199
Tested-by: Hudson CI
Reviewed-by: Judith Gull <jgu@bsiag.com>
IP-Clean: Judith Gull <jgu@bsiag.com>
31 files changed, 393 insertions, 96 deletions
diff --git a/org.eclipse.scout.commons/src/org/eclipse/scout/commons/annotations/Doc.java b/org.eclipse.scout.commons/src/org/eclipse/scout/commons/annotations/Doc.java index b2a57c165d..3e9e5cbfae 100644 --- a/org.eclipse.scout.commons/src/org/eclipse/scout/commons/annotations/Doc.java +++ b/org.eclipse.scout.commons/src/org/eclipse/scout/commons/annotations/Doc.java @@ -12,11 +12,22 @@ import java.lang.annotation.Target; @Target(ElementType.TYPE) public @interface Doc { + /** + * {@link #ACCEPT} type appears in generated doc<br> + * {@link #REJECT} type does not appear in generated doc<br> + * {@link #TRANSPARENT} type does not appear in generated doc, but it's children do<br> + * {@link #ACCEPT_REJECT_CHILDREN} type appears in generated doc, but it's children do not + */ enum Filtering { - ACCEPT, REJECT, TRANSPARENT, ACCEPT_REJECT_CHILDREN + ACCEPT, + REJECT, + TRANSPARENT, + ACCEPT_REJECT_CHILDREN } - // TODO ASA javadoc + /** + * Definition for the default filtering behavior + */ Filtering filter() default Filtering.ACCEPT; /** diff --git a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/basic/table/columns/AbstractBooleanColumn.java b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/basic/table/columns/AbstractBooleanColumn.java index f8e1cc5f2c..8b3cf639d0 100644 --- a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/basic/table/columns/AbstractBooleanColumn.java +++ b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/basic/table/columns/AbstractBooleanColumn.java @@ -10,6 +10,7 @@ ******************************************************************************/ package org.eclipse.scout.rt.client.ui.basic.table.columns; +import org.eclipse.scout.commons.annotations.ClassId; import org.eclipse.scout.commons.annotations.ConfigProperty; import org.eclipse.scout.commons.annotations.Order; import org.eclipse.scout.commons.exception.ProcessingException; @@ -22,6 +23,7 @@ import org.eclipse.scout.rt.client.ui.form.fields.booleanfield.AbstractBooleanFi /** * Column holding Boolean values */ +@ClassId("62fcae6b-6b75-4e8c-bb3f-ea3b400e7e30") public abstract class AbstractBooleanColumn extends AbstractColumn<Boolean> implements IBooleanColumn { private static final IScoutLogger LOG = ScoutLogManager.getLogger(AbstractBooleanColumn.class); diff --git a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/form/fields/decimalfield/AbstractDecimalField.java b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/form/fields/decimalfield/AbstractDecimalField.java index d7d2068a41..d8e3e21307 100644 --- a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/form/fields/decimalfield/AbstractDecimalField.java +++ b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/form/fields/decimalfield/AbstractDecimalField.java @@ -16,6 +16,7 @@ import java.math.RoundingMode; import java.text.DecimalFormat; import org.eclipse.scout.commons.LocaleThreadLocal; +import org.eclipse.scout.commons.annotations.ClassId; import org.eclipse.scout.commons.annotations.ConfigProperty; import org.eclipse.scout.commons.annotations.Order; import org.eclipse.scout.commons.logger.IScoutLogger; @@ -23,6 +24,7 @@ import org.eclipse.scout.commons.logger.ScoutLogManager; import org.eclipse.scout.rt.client.ui.form.fields.numberfield.AbstractNumberField; import org.eclipse.scout.rt.client.ui.valuecontainer.IDecimalValueContainer; +@ClassId("f4ec575e-f572-418d-a49c-3d0811ea7540") public abstract class AbstractDecimalField<T extends Number> extends AbstractNumberField<T> implements IDecimalField<T> { private static final IScoutLogger LOG = ScoutLogManager.getLogger(AbstractDecimalField.class); diff --git a/org.eclipse.scout.rt.spec.client.test/src/org/eclipse/scout/rt/spec/client/TypeSpceTest.java b/org.eclipse.scout.rt.spec.client.test/src/org/eclipse/scout/rt/spec/client/TypeSpceTest.java new file mode 100644 index 0000000000..5aa0707bc9 --- /dev/null +++ b/org.eclipse.scout.rt.spec.client.test/src/org/eclipse/scout/rt/spec/client/TypeSpceTest.java @@ -0,0 +1,75 @@ +/******************************************************************************* + * Copyright (c) 2010 BSI Business Systems Integration AG. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * BSI Business Systems Integration AG - initial API and implementation + ******************************************************************************/ +package org.eclipse.scout.rt.spec.client; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.Arrays; + +import org.eclipse.scout.commons.exception.ProcessingException; +import org.eclipse.scout.rt.client.ui.basic.table.columns.AbstractBooleanColumn; +import org.eclipse.scout.rt.client.ui.basic.table.columns.AbstractColumn; +import org.eclipse.scout.rt.client.ui.form.fields.datefield.AbstractDateField; +import org.eclipse.scout.rt.client.ui.form.fields.stringfield.AbstractStringField; +import org.junit.Before; +import org.junit.Test; + +/** + * Test for {@link AbstractTypeSpecTest}, {@link FieldTypesSpecTest}, {@link ColumnTypesSpecTest} + */ +public class TypeSpceTest { + + private FieldTypesSpecTest m_fieldTypesSpecTest; + private ColumnTypesSpecTest m_columnTypesSpecTest; + + @Before + public void setup() { + m_fieldTypesSpecTest = new FieldTypesSpecTest(); + m_columnTypesSpecTest = new ColumnTypesSpecTest(); + } + + @Test + public void testAcceptClassFieldTypeSpec() { + assertTrue("AbstractStringField should be accepted, since it is a field and doc text is available.", m_fieldTypesSpecTest.acceptClass(AbstractStringField.class)); + assertFalse("AbstractBooleanColumn should not be accepted, since it is not a field.", m_fieldTypesSpecTest.acceptClass(AbstractBooleanColumn.class)); + assertFalse("TestStringField should not be accepted, since doc text is not available.", m_fieldTypesSpecTest.acceptClass(TestStringField.class)); + } + + @Test + public void testAcceptClassColumnTypeSpec() { + assertFalse("AbstractStringField should not be accepted, since it is not a column.", m_columnTypesSpecTest.acceptClass(AbstractStringField.class)); + assertTrue("AbstractBooleanColumn should be accepted, since it is a column and doc text is available.", m_columnTypesSpecTest.acceptClass(AbstractBooleanColumn.class)); + assertFalse("TestStringField should not be accepted, since it's neither a column and doc text is not available.", m_columnTypesSpecTest.acceptClass(TestStringField.class)); + assertFalse("TestStringColumn should not be accepted, since doc text is not available.", m_columnTypesSpecTest.acceptClass(TestStringColumn.class)); + } + + @Test + public void testGetAllClassesColumnTypeSpec() throws ProcessingException { + assertTrue("Expected AbstractBooleanColumn to be found.", Arrays.asList(m_columnTypesSpecTest.getAllClasses()).contains(AbstractBooleanColumn.class)); + } + + @Test + public void testGetAllClassesFieldsTypeSpec() throws ProcessingException { + ArrayList<Class> expectedClasses = new ArrayList<Class>(); + expectedClasses.add(AbstractStringField.class); + expectedClasses.add(AbstractDateField.class); + assertTrue("Expected AbstractStringField to be found.", Arrays.asList(m_fieldTypesSpecTest.getAllClasses()).containsAll(expectedClasses)); + } + + private class TestStringField extends AbstractStringField { + } + + private class TestStringColumn extends AbstractColumn { + } + +} diff --git a/org.eclipse.scout.rt.spec.client.test/src/org/eclipse/scout/rt/spec/client/fixture/TestConfigIgnoreDoc.java b/org.eclipse.scout.rt.spec.client.test/src/org/eclipse/scout/rt/spec/client/fixture/TestConfigIgnoreDoc.java index bfa0f63c23..eaad13457f 100644 --- a/org.eclipse.scout.rt.spec.client.test/src/org/eclipse/scout/rt/spec/client/fixture/TestConfigIgnoreDoc.java +++ b/org.eclipse.scout.rt.spec.client.test/src/org/eclipse/scout/rt/spec/client/fixture/TestConfigIgnoreDoc.java @@ -32,14 +32,14 @@ public class TestConfigIgnoreDoc extends DefaultEntityConfig<IFormField> { } @Override - public List<IDocTextExtractor<IFormField>> getTexts() { + public List<IDocTextExtractor<IFormField>> getPropertyTextExtractors() { ArrayList<IDocTextExtractor<IFormField>> p = new ArrayList<IDocTextExtractor<IFormField>>(); p.add(new TypeExtractor<IFormField>()); return p; } @Override - public IDocTextExtractor<IFormField> getId() { + public IDocTextExtractor<IFormField> getIdExtractor() { return null; } diff --git a/org.eclipse.scout.rt.spec.client.test/src/org/eclipse/scout/rt/spec/client/fixture/TestConfigNoFilters.java b/org.eclipse.scout.rt.spec.client.test/src/org/eclipse/scout/rt/spec/client/fixture/TestConfigNoFilters.java index ff8b38edcd..d60036ff2f 100644 --- a/org.eclipse.scout.rt.spec.client.test/src/org/eclipse/scout/rt/spec/client/fixture/TestConfigNoFilters.java +++ b/org.eclipse.scout.rt.spec.client.test/src/org/eclipse/scout/rt/spec/client/fixture/TestConfigNoFilters.java @@ -29,7 +29,7 @@ public class TestConfigNoFilters extends DefaultEntityConfig<IFormField> { } @Override - public List<IDocTextExtractor<IFormField>> getTexts() { + public List<IDocTextExtractor<IFormField>> getPropertyTextExtractors() { ArrayList<IDocTextExtractor<IFormField>> p = new ArrayList<IDocTextExtractor<IFormField>>(); p.add(new TypeExtractor<IFormField>()); return p; diff --git a/org.eclipse.scout.rt.spec.client.test/src/org/eclipse/scout/rt/spec/client/gen/extract/SpecialDescriptionExtractorTest.java b/org.eclipse.scout.rt.spec.client.test/src/org/eclipse/scout/rt/spec/client/gen/extract/SpecialDescriptionExtractorTest.java new file mode 100644 index 0000000000..642cbfffe4 --- /dev/null +++ b/org.eclipse.scout.rt.spec.client.test/src/org/eclipse/scout/rt/spec/client/gen/extract/SpecialDescriptionExtractorTest.java @@ -0,0 +1,31 @@ +/******************************************************************************* + * Copyright (c) 2010 BSI Business Systems Integration AG. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * BSI Business Systems Integration AG - initial API and implementation + ******************************************************************************/ +package org.eclipse.scout.rt.spec.client.gen.extract; + +import org.eclipse.scout.commons.StringUtility; +import org.eclipse.scout.rt.client.ui.form.fields.stringfield.AbstractStringField; +import org.eclipse.scout.rt.shared.TEXTS; +import org.junit.Assert; +import org.junit.Test; + +/** + * Test for {@link SpecialDescriptionExtractor} + */ +public class SpecialDescriptionExtractorTest { + + @Test + public void testGetText() { + SpecialDescriptionExtractor nameExtractor = new SpecialDescriptionExtractor(TEXTS.get("org.eclipse.scout.rt.spec.type"), "_name"); + SpecialDescriptionExtractor descriptionExtractor = new SpecialDescriptionExtractor(TEXTS.get("org.eclipse.scout.rt.spec.doc"), "_description"); + Assert.assertTrue("Name for AbstractStringField could not be extracted!", !StringUtility.isNullOrEmpty(nameExtractor.getText(AbstractStringField.class))); + Assert.assertTrue("Description for AbstractStringField could not be extracted!", !StringUtility.isNullOrEmpty(descriptionExtractor.getText(AbstractStringField.class))); + } +} diff --git a/org.eclipse.scout.rt.spec.client/META-INF/MANIFEST.MF b/org.eclipse.scout.rt.spec.client/META-INF/MANIFEST.MF index 9027814642..4da74e3c10 100644 --- a/org.eclipse.scout.rt.spec.client/META-INF/MANIFEST.MF +++ b/org.eclipse.scout.rt.spec.client/META-INF/MANIFEST.MF @@ -20,5 +20,6 @@ Require-Bundle: org.eclipse.core.runtime, org.eclipse.scout.rt.extension.client, org.eclipse.scout.commons, org.eclipse.scout.rt.testing.shared +Import-Package: org.junit;version="[4.9.0,5.0.0)" Bundle-RequiredExecutionEnvironment: JavaSE-1.6 Bundle-ActivationPolicy: lazy diff --git a/org.eclipse.scout.rt.spec.client/resources/docs/Docs.properties b/org.eclipse.scout.rt.spec.client/resources/docs/Docs.properties index d0c73f439a..b8faa9c9a0 100644 --- a/org.eclipse.scout.rt.spec.client/resources/docs/Docs.properties +++ b/org.eclipse.scout.rt.spec.client/resources/docs/Docs.properties @@ -1,16 +1,22 @@ +62fcae6b-6b75-4e8c-bb3f-ea3b400e7e30_description=Column for displaying boolean values (yes or no) as checkbox. +62fcae6b-6b75-4e8c-bb3f-ea3b400e7e30_name=Checkbox Column d8b1f73a-4415-4477-8408-e6ada9e69551_description=Field for text editing -d8b1f73a-4415-4477-8408-e6ada9e69551_name=Textfield +d8b1f73a-4415-4477-8408-e6ada9e69551_name=Text Field +f4ec575e-f572-418d-a49c-3d0811ea7540_description=Field for editing decimal numbers +f4ec575e-f572-418d-a49c-3d0811ea7540_name=Decimal Number Field f73eed8c-1e70-4903-a23f-4a29d884e5ea_description=Field for editing dates -f73eed8c-1e70-4903-a23f-4a29d884e5ea_name=Datefield +f73eed8c-1e70-4903-a23f-4a29d884e5ea_name=Date Field org.eclipse.scout.rt.spec.action.emptySpace=0 org.eclipse.scout.rt.spec.action.multiSelection=n org.eclipse.scout.rt.spec.action.singleSelection=1 org.eclipse.scout.rt.spec.action.withoutLabel=without label org.eclipse.scout.rt.spec.columns=Columns +org.eclipse.scout.rt.spec.columntypes=Column Types org.eclipse.scout.rt.spec.doc=Description org.eclipse.scout.rt.spec.enabled=e org.eclipse.scout.rt.spec.false=- org.eclipse.scout.rt.spec.fields=Fields +org.eclipse.scout.rt.spec.fieldtypes=Field Types org.eclipse.scout.rt.spec.id=Id org.eclipse.scout.rt.spec.label=Label org.eclipse.scout.rt.spec.length=Length @@ -21,5 +27,4 @@ org.eclipse.scout.rt.spec.sort=Sort org.eclipse.scout.rt.spec.tooltip=Tooltip org.eclipse.scout.rt.spec.true=+ org.eclipse.scout.rt.spec.type=Type -org.eclipse.scout.rt.spec.types=Types org.eclipse.scout.rt.spec.width=Width diff --git a/org.eclipse.scout.rt.spec.client/resources/docs/Docs_de.properties b/org.eclipse.scout.rt.spec.client/resources/docs/Docs_de.properties index 3f7e457b47..9398773617 100644 --- a/org.eclipse.scout.rt.spec.client/resources/docs/Docs_de.properties +++ b/org.eclipse.scout.rt.spec.client/resources/docs/Docs_de.properties @@ -1,5 +1,9 @@ +62fcae6b-6b75-4e8c-bb3f-ea3b400e7e30_description=Spalte um boolsche Werte (ja oder nein) als Checkbox darzustellen. +62fcae6b-6b75-4e8c-bb3f-ea3b400e7e30_name=Checkbox Spalte d8b1f73a-4415-4477-8408-e6ada9e69551_description=Feld f\u00FCr die Erfassung von Text d8b1f73a-4415-4477-8408-e6ada9e69551_name=Textfeld +f4ec575e-f572-418d-a49c-3d0811ea7540_description=Feld f\u00FCr die Erfassung von Dezimalzahlen +f4ec575e-f572-418d-a49c-3d0811ea7540_name=Dezimalzahlfeld f73eed8c-1e70-4903-a23f-4a29d884e5ea_description=Feld f\u00FCr die Datumserfassung f73eed8c-1e70-4903-a23f-4a29d884e5ea_name=Datumsfeld org.eclipse.scout.rt.spec.action.emptySpace=0 @@ -7,10 +11,12 @@ org.eclipse.scout.rt.spec.action.multiSelection=n org.eclipse.scout.rt.spec.action.singleSelection=1 org.eclipse.scout.rt.spec.action.withoutLabel=ohne Bezeichnung org.eclipse.scout.rt.spec.columns=Spalten +org.eclipse.scout.rt.spec.columntypes=Spaltentypen org.eclipse.scout.rt.spec.doc=Beschreibung org.eclipse.scout.rt.spec.enabled=e org.eclipse.scout.rt.spec.false=- org.eclipse.scout.rt.spec.fields=Felder +org.eclipse.scout.rt.spec.fieldtypes=Feldtypen org.eclipse.scout.rt.spec.id=Id org.eclipse.scout.rt.spec.label=Beschriftung org.eclipse.scout.rt.spec.length=L\u00E4nge @@ -21,5 +27,4 @@ org.eclipse.scout.rt.spec.sort=Sort org.eclipse.scout.rt.spec.tooltip=Tooltip org.eclipse.scout.rt.spec.true=+ org.eclipse.scout.rt.spec.type=Typ -org.eclipse.scout.rt.spec.types=Typen org.eclipse.scout.rt.spec.width=Breite diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/AbstractTypeSpecTest.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/AbstractTypeSpecTest.java new file mode 100644 index 0000000000..09801cd046 --- /dev/null +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/AbstractTypeSpecTest.java @@ -0,0 +1,100 @@ +/******************************************************************************* + * Copyright (c) 2010 BSI Business Systems Integration AG. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * BSI Business Systems Integration AG - initial API and implementation + ******************************************************************************/ +package org.eclipse.scout.rt.spec.client; + +import java.util.HashSet; + +import org.eclipse.core.runtime.Platform; +import org.eclipse.scout.commons.ITypeWithClassId; +import org.eclipse.scout.commons.exception.ProcessingException; +import org.eclipse.scout.commons.logger.IScoutLogger; +import org.eclipse.scout.commons.logger.ScoutLogManager; +import org.eclipse.scout.commons.runtime.BundleBrowser; +import org.eclipse.scout.rt.spec.client.gen.TypeSpecGenerator; +import org.eclipse.scout.rt.spec.client.gen.extract.SpecialDescriptionExtractor; +import org.eclipse.scout.rt.spec.client.internal.Activator; +import org.eclipse.scout.rt.spec.client.out.IDocSection; +import org.junit.Test; +import org.osgi.framework.Bundle; + +/** + * Abstract spec test for creating a spec file with a table describing types (eg. form fields, columns, ...) + * <p> + * A type appears on the list if these criteria are met:<br> + * - The type is a subtype or the same type as the supertype provided in the constructor.<br> + * - A doc text with the key "[types classid]_name" is defined + * <p> + * The resulting table consists of the two columns:<br> + * - Name: filled with doc text with the key "[types classid]_name"<br> + * - Description: filled with doc text with the key "[types classid]_description" + */ +public abstract class AbstractTypeSpecTest extends AbstractSpecGen { + private static final IScoutLogger LOG = ScoutLogManager.getLogger(AbstractTypeSpecTest.class); + private Class<?> m_supertype; + private String m_id; + private String m_title; + + public AbstractTypeSpecTest(String id, String title, Class<? extends ITypeWithClassId> supertype) { + m_id = id; + m_title = title; + m_supertype = supertype; + } + + @Test + public void generateFieldTypeSpec() throws ProcessingException { + + Class[] fieldTypes = getAllClasses(); + IDocSection doc = generate(fieldTypes); + write(doc, m_id, new String[]{}); + } + + protected Class[] getAllClasses() throws ProcessingException { + HashSet<Class> discoveredClasses = new HashSet<Class>(); + for (Bundle bundle : Activator.getDefault().getBundle().getBundleContext().getBundles()) { + // Skip fragments, because classes from fragments are read when browsing the host bundle + if (Platform.isFragment(bundle)) { + continue; + } + String[] classNames; + BundleBrowser bundleBrowser = new BundleBrowser(bundle.getSymbolicName(), bundle.getSymbolicName()); + classNames = bundleBrowser.getClasses(false, true); + Class c = null; + for (String className : classNames) { + try { + c = bundle.loadClass(className); + } + catch (Throwable t) { + // nop: we are only interested in loadable classes + } + if (acceptClass(c)) { + discoveredClasses.add(c); + } + } + } + + Class[] fieldTypes = discoveredClasses.toArray(new Class[discoveredClasses.size()]); + return fieldTypes; + } + + protected boolean acceptClass(Class c) { + if (c == null || !m_supertype.isAssignableFrom(c)) { + return false; + } + String typeDescription = new SpecialDescriptionExtractor(null, "_name").getText(c); + return typeDescription != null; + } + + protected IDocSection generate(Class[] fieldTypes) { + TypeSpecGenerator g = new TypeSpecGenerator(getConfiguration(), m_id, m_title); + return g.getDocSection(fieldTypes); + } + +} diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/ColumnTypesSpecTest.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/ColumnTypesSpecTest.java new file mode 100644 index 0000000000..53b39fdd72 --- /dev/null +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/ColumnTypesSpecTest.java @@ -0,0 +1,23 @@ +/******************************************************************************* + * Copyright (c) 2010 BSI Business Systems Integration AG. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the BSI CRM Software License v1.0 + * which accompanies this distribution as bsi-v10.html + * + * Contributors: + * BSI Business Systems Integration AG - initial API and implementation + ******************************************************************************/ +package org.eclipse.scout.rt.spec.client; + +import org.eclipse.scout.rt.client.ui.basic.table.columns.IColumn; +import org.eclipse.scout.rt.shared.TEXTS; + +/** + * Concrete implementation of {@link AbstractTypeSpecTest} for columns + */ +public class ColumnTypesSpecTest extends AbstractTypeSpecTest { + + public ColumnTypesSpecTest() { + super("org.eclipse.scout.rt.spec.columntypes", TEXTS.get("org.eclipse.scout.rt.spec.columntypes"), IColumn.class); + } +} diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/FieldTypeSpecGen.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/FieldTypeSpecGen.java deleted file mode 100644 index fd0fae70f9..0000000000 --- a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/FieldTypeSpecGen.java +++ /dev/null @@ -1,43 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010 BSI Business Systems Integration AG. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * BSI Business Systems Integration AG - initial API and implementation - ******************************************************************************/ -package org.eclipse.scout.rt.spec.client; - -import org.eclipse.scout.commons.exception.ProcessingException; -import org.eclipse.scout.rt.client.ui.basic.table.ITable; -import org.eclipse.scout.rt.client.ui.desktop.outline.pages.IPageWithTable; -import org.eclipse.scout.rt.client.ui.form.fields.datefield.AbstractDateField; -import org.eclipse.scout.rt.client.ui.form.fields.stringfield.AbstractStringField; -import org.eclipse.scout.rt.spec.client.gen.TypeSpecGenerator; -import org.eclipse.scout.rt.spec.client.out.IDocSection; - -/** - * - */ -public abstract class FieldTypeSpecGen extends AbstractSpecGen { - - public void printAllFields() throws ProcessingException { - - Class[] fieldTypes = new Class[]{AbstractStringField.class, AbstractDateField.class}; - IDocSection doc = generate(fieldTypes); - write(doc, "SpecTypes", new String[]{}); - } - - protected IDocSection generate(Class[] fieldTypes) { - TypeSpecGenerator g = new TypeSpecGenerator(getConfiguration()); - return g.getDocSection(fieldTypes); - } - - /** - * @return - */ - public abstract IPageWithTable<? extends ITable> createAndStartTablePage() throws ProcessingException; - -} diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/FieldTypesSpecTest.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/FieldTypesSpecTest.java new file mode 100644 index 0000000000..212cd12014 --- /dev/null +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/FieldTypesSpecTest.java @@ -0,0 +1,23 @@ +/******************************************************************************* + * Copyright (c) 2010 BSI Business Systems Integration AG. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the BSI CRM Software License v1.0 + * which accompanies this distribution as bsi-v10.html + * + * Contributors: + * BSI Business Systems Integration AG - initial API and implementation + ******************************************************************************/ +package org.eclipse.scout.rt.spec.client; + +import org.eclipse.scout.rt.client.ui.form.fields.IFormField; +import org.eclipse.scout.rt.shared.TEXTS; + +/** + * Concrete implementation of {@link AbstractTypeSpecTest} for form fields + */ +public class FieldTypesSpecTest extends AbstractTypeSpecTest { + + public FieldTypesSpecTest() { + super("org.eclipse.scout.rt.spec.fieldtypes", TEXTS.get("org.eclipse.scout.rt.spec.fieldtypes"), IFormField.class); + } +} diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/SpecPostProcessor.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/SpecPostProcessor.java index 7d9416a428..e98a38121a 100644 --- a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/SpecPostProcessor.java +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/SpecPostProcessor.java @@ -14,15 +14,22 @@ import java.io.File; import java.util.HashMap; import org.eclipse.scout.commons.exception.ProcessingException; +import org.eclipse.scout.commons.logger.IScoutLogger; +import org.eclipse.scout.commons.logger.ScoutLogManager; import org.eclipse.scout.rt.spec.client.out.mediawiki.MediawikiAnchorCollector; /** * A post processor for replacing link tags to point to the generated files. */ public class SpecPostProcessor extends AbstractSpecGen implements ISpecProcessor { + private static IScoutLogger LOG = ScoutLogManager.getLogger(SpecPostProcessor.class); @Override public void process() throws ProcessingException { + if (!getFileConfig().getMediawikiDir().exists()) { + LOG.warn("MediawikiDir does not exists! (" + getFileConfig().getMediawikiDir().getPath() + ")"); + return; + } for (File wiki : getFileConfig().getMediawikiDir().listFiles()) { replaceLinks(wiki); File html = convertToHTML(wiki); diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/SpecFileConfig.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/SpecFileConfig.java index 48d08f7b08..52c47a8734 100644 --- a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/SpecFileConfig.java +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/SpecFileConfig.java @@ -19,6 +19,7 @@ import java.util.ArrayList; import java.util.List; import org.eclipse.core.runtime.FileLocator; +import org.eclipse.core.runtime.IProduct; import org.eclipse.core.runtime.Platform; import org.eclipse.scout.commons.exception.ProcessingException; import org.eclipse.scout.commons.logger.IScoutLogger; @@ -36,7 +37,7 @@ public class SpecFileConfig { private static final String MEDIAWIKI_DIR_NAME = "mediawiki"; private static final String LINKS_FILE_NAME = "links.properties"; - private String[] m_additionalSourcePlugins; + private String[] m_additionalSourcePlugins = new String[0]; private Bundle m_bundle; /** @@ -44,7 +45,11 @@ public class SpecFileConfig { * when running this Eclipse instance. */ public SpecFileConfig() { - m_bundle = Platform.getProduct().getDefiningBundle(); + IProduct product = Platform.getProduct(); + // TODO ASA Nullcheck is only needed for tests. --> Create a product for tests and remove nullcheck. + if (product != null) { + m_bundle = product.getDefiningBundle(); + } } /** diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultEntityConfig.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultEntityConfig.java index eb87b558f8..ae3d8fd743 100644 --- a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultEntityConfig.java +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultEntityConfig.java @@ -31,14 +31,13 @@ public class DefaultEntityConfig<T extends ITypeWithClassId> implements IDocEnti */ @Override public List<IDocFilter<T>> getFilters() { - // TODO ASA rename - List<IDocFilter<T>> columnFilters = new ArrayList<IDocFilter<T>>(); - columnFilters.add(new DefaultDocFilter<T>()); - return columnFilters; + List<IDocFilter<T>> filters = new ArrayList<IDocFilter<T>>(); + filters.add(new DefaultDocFilter<T>()); + return filters; } @Override - public List<IDocTextExtractor<T>> getTexts() { + public List<IDocTextExtractor<T>> getPropertyTextExtractors() { ArrayList<IDocTextExtractor<T>> p = new ArrayList<IDocTextExtractor<T>>(); p.add(new TypeExtractor<T>()); p.add(new DescriptionExtractor<T>()); @@ -46,12 +45,12 @@ public class DefaultEntityConfig<T extends ITypeWithClassId> implements IDocEnti } @Override - public IDocTextExtractor<T> getId() { + public IDocTextExtractor<T> getIdExtractor() { return new TypeExtractor<T>(); } @Override - public IDocTextExtractor<T> getTitle() { + public IDocTextExtractor<T> getTitleExtractor() { return new SimpleTypeTextExtractor<T>(); } diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultFormConfig.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultFormConfig.java index ce11bb41d3..16f16d30cd 100644 --- a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultFormConfig.java +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultFormConfig.java @@ -25,7 +25,7 @@ import org.eclipse.scout.rt.spec.client.gen.extract.form.FormTitleExtractor; public class DefaultFormConfig extends DefaultEntityConfig<IForm> { @Override - public List<IDocTextExtractor<IForm>> getTexts() { + public List<IDocTextExtractor<IForm>> getPropertyTextExtractors() { List<IDocTextExtractor<IForm>> propertyTemplate = new ArrayList<IDocTextExtractor<IForm>>(); propertyTemplate.add(new FormTitleExtractor()); propertyTemplate.add(new DescriptionExtractor<IForm>()); @@ -34,7 +34,7 @@ public class DefaultFormConfig extends DefaultEntityConfig<IForm> { } @Override - public IDocTextExtractor<IForm> getTitle() { + public IDocTextExtractor<IForm> getTitleExtractor() { return new FormTitleExtractor(); } diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultSmartFieldConfig.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultSmartFieldConfig.java index 088dfc1fad..f9f9ff8de5 100644 --- a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultSmartFieldConfig.java +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultSmartFieldConfig.java @@ -23,12 +23,12 @@ import org.eclipse.scout.rt.spec.client.gen.extract.form.field.TableFieldTypeWit public class DefaultSmartFieldConfig extends DefaultEntityConfig<ISmartField<?>> { @Override - public List<IDocTextExtractor<ISmartField<?>>> getTexts() { + public List<IDocTextExtractor<ISmartField<?>>> getPropertyTextExtractors() { return new ArrayList<IDocTextExtractor<ISmartField<?>>>(); } @Override - public IDocTextExtractor<ISmartField<?>> getTitle() { + public IDocTextExtractor<ISmartField<?>> getTitleExtractor() { return new TableFieldTypeWithLabelExtractor<ISmartField<?>>(); } } diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultTableFieldConfig.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultTableFieldConfig.java index e3050626a9..d86aaf4b86 100644 --- a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultTableFieldConfig.java +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultTableFieldConfig.java @@ -24,12 +24,12 @@ import org.eclipse.scout.rt.spec.client.gen.extract.form.field.TableFieldTypeWit public class DefaultTableFieldConfig extends DefaultEntityConfig<ITableField<? extends ITable>> { @Override - public List<IDocTextExtractor<ITableField<? extends ITable>>> getTexts() { + public List<IDocTextExtractor<ITableField<? extends ITable>>> getPropertyTextExtractors() { return new ArrayList<IDocTextExtractor<ITableField<? extends ITable>>>(); } @Override - public IDocTextExtractor<ITableField<? extends ITable>> getTitle() { + public IDocTextExtractor<ITableField<? extends ITable>> getTitleExtractor() { return new TableFieldTypeWithLabelExtractor<ITableField<? extends ITable>>(); } diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultTablePageConfig.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultTablePageConfig.java index 7b79cfa2ec..c5a71cdc17 100644 --- a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultTablePageConfig.java +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultTablePageConfig.java @@ -21,7 +21,7 @@ import org.eclipse.scout.rt.spec.client.gen.extract.form.page.TablePageExtractor public class DefaultTablePageConfig extends DefaultEntityConfig<IPageWithTable<? extends ITable>> { @Override - public IDocTextExtractor<IPageWithTable<? extends ITable>> getTitle() { + public IDocTextExtractor<IPageWithTable<? extends ITable>> getTitleExtractor() { return new TablePageExtractor<IPageWithTable<? extends ITable>>(); } diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultTypesConfig.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultTypesConfig.java index 164d84f260..9f5c46036d 100644 --- a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultTypesConfig.java +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultTypesConfig.java @@ -16,29 +16,31 @@ import java.util.List; import org.eclipse.scout.rt.shared.TEXTS; import org.eclipse.scout.rt.spec.client.gen.extract.IDocTextExtractor; +import org.eclipse.scout.rt.spec.client.gen.extract.SpecialDescriptionExtractor; import org.eclipse.scout.rt.spec.client.gen.filter.IDocFilter; /** - * + * Default configuration for {@link Class} */ public class DefaultTypesConfig implements IDocEntityListConfig<Class> { @Override public List<IDocTextExtractor<Class>> getTextExtractors() { ArrayList<IDocTextExtractor<Class>> extractors = new ArrayList<IDocTextExtractor<Class>>(); - // TODO ASA create type extractors + + extractors.add(new SpecialDescriptionExtractor(TEXTS.get("org.eclipse.scout.rt.spec.type"), "_name")); + extractors.add(new SpecialDescriptionExtractor(TEXTS.get("org.eclipse.scout.rt.spec.doc"), "_description")); return extractors; } @Override public List<IDocFilter<Class>> getFilters() { - // TODO ASA filter for types? return Collections.emptyList(); } @Override public String getTitle() { - return TEXTS.get("org.eclipse.scout.rt.spec.types"); + return null; } } diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/IDocEntityConfig.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/IDocEntityConfig.java index 44c567a99d..5593371cf9 100644 --- a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/IDocEntityConfig.java +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/IDocEntityConfig.java @@ -28,7 +28,7 @@ public interface IDocEntityConfig<T> { * * @return a list of properties that should be generated. */ - List<IDocTextExtractor<T>> getTexts(); + List<IDocTextExtractor<T>> getPropertyTextExtractors(); /** * Configuration for filtering <code>T</code>. Only the objects accepted by all filters are generated. @@ -42,13 +42,13 @@ public interface IDocEntityConfig<T> { * * @return {@link IDocTextExtractor} */ - IDocTextExtractor<T> getId(); + IDocTextExtractor<T> getIdExtractor(); /** * Configuration describing an extractor for the title of the entity * * @return {@link IDocTextExtractor} */ - IDocTextExtractor<T> getTitle(); + IDocTextExtractor<T> getTitleExtractor(); } diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/DocGenUtility.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/DocGenUtility.java index 3e53a4e505..52b6fd6966 100644 --- a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/DocGenUtility.java +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/DocGenUtility.java @@ -84,7 +84,7 @@ public final class DocGenUtility { * @return {@link IDocTable} */ public static <T> IDocTable createDocTable(T entity, IDocEntityConfig<T> config) { - List<IDocTextExtractor<T>> textExtractors = config.getTexts(); + List<IDocTextExtractor<T>> textExtractors = config.getPropertyTextExtractors(); List<String[]> rows = new ArrayList<String[]>(); String[] texts = DocGenUtility.getTexts(entity, textExtractors); if (texts != null && texts.length > 0) { diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/FormSpecGenerator.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/FormSpecGenerator.java index 6567b641b7..a1cdadbd34 100644 --- a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/FormSpecGenerator.java +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/FormSpecGenerator.java @@ -44,8 +44,8 @@ public class FormSpecGenerator { IDocSection[] subSections = getSubSections(form, visitors); IDocTable formSpec = DocGenUtility.createDocTable(form, formConfig); - String id = formConfig.getId().getText(form); - String title = formConfig.getTitle().getText(form); + String id = formConfig.getIdExtractor().getText(form); + String title = formConfig.getTitleExtractor().getText(form); return new SectionWithTable(id, title, formSpec, subSections); } diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/PageSpecGenerator.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/PageSpecGenerator.java index 3bd5d5d228..2cf4846042 100644 --- a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/PageSpecGenerator.java +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/PageSpecGenerator.java @@ -31,8 +31,8 @@ public class PageSpecGenerator { public IDocSection getDocSection(IPageWithTable<? extends ITable> page) { IDocEntityConfig<IPageWithTable<? extends ITable>> tablePageConfig = m_config.getTablePageConfig(); - String id = tablePageConfig.getId().getText(page); - String title = tablePageConfig.getTitle().getText(page); + String id = tablePageConfig.getIdExtractor().getText(page); + String title = tablePageConfig.getTitleExtractor().getText(page); IColumn<?>[] columns = page.getTable().getColumns(); IMenu[] menus = page.getTable().getMenus(); diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/SmartFieldVisitor.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/SmartFieldVisitor.java index 4d608dcc24..fe18d2e5d9 100644 --- a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/SmartFieldVisitor.java +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/SmartFieldVisitor.java @@ -46,8 +46,8 @@ public class SmartFieldVisitor implements IDocFormFieldVisitor { * */ private IDocSection createDocSection(ISmartField<?> field) { - String id = m_config.getSmartFieldConfig().getId().getText(field); - String title = m_config.getSmartFieldConfig().getTitle().getText(field); + String id = m_config.getSmartFieldConfig().getIdExtractor().getText(field); + String title = m_config.getSmartFieldConfig().getTitleExtractor().getText(field); IDocTable docTable = DocGenUtility.createDocTable(field, m_config.getSmartFieldConfig()); IDocSection menuSection = DocGenUtility.createDocSection(field.getMenus(), m_config.getMenuConfig()); if (menuSection != null) { diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/TableFieldVisitor.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/TableFieldVisitor.java index 2945ca4f56..13cb98b3b7 100644 --- a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/TableFieldVisitor.java +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/TableFieldVisitor.java @@ -42,8 +42,8 @@ public class TableFieldVisitor implements IDocFormFieldVisitor { } private IDocSection createDocSection(ITableField<?> field) { - String id = m_config.getTableFieldConfig().getId().getText(field); - String title = m_config.getTableFieldConfig().getTitle().getText(field); + String id = m_config.getTableFieldConfig().getIdExtractor().getText(field); + String title = m_config.getTableFieldConfig().getTitleExtractor().getText(field); IDocSection menuSection = DocGenUtility.createDocSection(field.getTable().getMenus(), m_config.getMenuConfig()); IDocSection columnsSection = DocGenUtility.createDocSection(field.getTable().getColumns(), m_config.getColumnConfig()); return new SectionWithTable(id, title, menuSection, columnsSection); diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/TypeSpecGenerator.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/TypeSpecGenerator.java index a5ceb31e11..520a7a485b 100644 --- a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/TypeSpecGenerator.java +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/TypeSpecGenerator.java @@ -10,24 +10,25 @@ ******************************************************************************/ package org.eclipse.scout.rt.spec.client.gen; -import org.eclipse.scout.rt.shared.TEXTS; import org.eclipse.scout.rt.spec.client.config.IDocConfig; import org.eclipse.scout.rt.spec.client.out.IDocSection; import org.eclipse.scout.rt.spec.client.out.SectionWithTable; +import org.eclipse.scout.rt.spec.client.out.mediawiki.MediawikiUtility; -/** - * Creates Specification data for a page - */ public class TypeSpecGenerator { private final IDocConfig m_config; + private String m_id; + private String m_title; - public TypeSpecGenerator(IDocConfig config) { + public TypeSpecGenerator(IDocConfig config, String id, String title) { m_config = config; + m_id = id; + m_title = title; } - public IDocSection getDocSection(Class[] fieldTypes) { - - IDocSection typeSection = DocGenUtility.createDocSection(fieldTypes, m_config.getTypesConfig()); - return new SectionWithTable("org.eclipse.scout.rt.spec.types", TEXTS.get("org.eclipse.scout.rt.spec.types"), typeSection); + public IDocSection getDocSection(Class[] types) { + String titleWithAnchor = MediawikiUtility.transformToWiki(m_title + "{{" + m_id + "}}"); + IDocSection typeSection = DocGenUtility.createDocSection(types, m_config.getTypesConfig()); + return new SectionWithTable(m_id, titleWithAnchor, typeSection); } } diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/extract/SpecialDescriptionExtractor.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/extract/SpecialDescriptionExtractor.java new file mode 100644 index 0000000000..d12c1cdfc8 --- /dev/null +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/extract/SpecialDescriptionExtractor.java @@ -0,0 +1,44 @@ +/******************************************************************************* + * Copyright (c) 2010 BSI Business Systems Integration AG. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * BSI Business Systems Integration AG - initial API and implementation + ******************************************************************************/ +package org.eclipse.scout.rt.spec.client.gen.extract; + +import org.eclipse.scout.commons.ConfigurationUtility; +import org.eclipse.scout.rt.shared.TEXTS; + +/** + * An {@link IDocTextExtractor} with the fully qualified class name as text. + */ +public class SpecialDescriptionExtractor extends AbstractNamedTextExtractor<Class> implements IDocTextExtractor<Class> { + + private String m_keySuffix; + + /** + * @param string + */ + public SpecialDescriptionExtractor(String name, String keySuffix) { + super(name); + m_keySuffix = keySuffix; + } + + /** + * @return fully qualified class name. + */ + @Override + public String getText(Class clazz) { + String doc = TEXTS.get(ConfigurationUtility.getAnnotatedClassIdWithFallback(clazz) + m_keySuffix); + // TODO ASA fix this hack: name.contains("{undefined text") + if (doc.startsWith("{undefined text")) { + return null; + } + return doc; + } + +} diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/filter/DefaultDocFilter.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/filter/DefaultDocFilter.java index 382525cf8c..cae3d54e8c 100644 --- a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/filter/DefaultDocFilter.java +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/filter/DefaultDocFilter.java @@ -17,9 +17,13 @@ import org.eclipse.scout.rt.client.ui.form.fields.groupbox.AbstractGroupBox; import org.eclipse.scout.rt.spec.client.gen.extract.DescriptionExtractor; /** - * A default doc filter that implements the following rules which can optionally be overridden with the annotation - * {@link Doc#filter()}:<br> - * TODO ASA docu: default filtering rules + * A default doc filter that implements the following rules: + * <p> + * <li>If a filter annotation ({@link Doc#filter()}) is present for the element filtering is applied according the + * annotation. + * <li>For GroupBoxes with no filter annotation and neither label nor description defined: {@link Filtering#TRANSPARENT} + * is applied. + * <li>For all other elements: {@link Filtering#ACCEPT} is applied. */ public class DefaultDocFilter<T> implements IDocFilter<T> { |