luettel
I'm new here

Anhand eines Skripts ein neues Datenbank-Attribut erstellen

Hallo Zusammen,

ich möchte ein einfaches Skirpt erstellt, welches ein neues Attribut in eine Tabelle schreibt.

Dies ist bisher mein Ansatz, aber leider bekomme ich immer einen Fehler. Ich glaube, dass das Schema nicht erstellt werden kann (siehe Kommentar im Code).

Kann mir jemand helfen?

createNewIR() {

    _context.logInfo("createNewIR ....");

    TemplateStoreRoot templateStore = (TemplateStoreRoot) _context.requireSpecialist(StoreAgent.TYPE).getStore(Store.Type.TEMPLATESTORE,false);

  
   TableTemplate tableTemplate = (TableTemplate) templateStore.getStoreElement("test", UidType.TEMPLATESTORE_TABLEFORMATTEMPLATE);
//   getStoreElement("test", UidType.TEMPLATESTORE_TABLEFORMATTEMPLATE);
  
   Schema _schema = tableTemplate.getSchema(); // hier kommt immer der Fehler.
   String _entityTypeName = "Article";
   String _attributeName = "MyAttribute";
    
     try {
        _schema.setLock(true, false);
        final Session orSession = _schema.getSession(false);
        final de.espirit.or.schema.Schema orSchema = orSession.getSchema();
        final EntityType entityType = orSchema.getEntityType(_entityTypeName);
        SimpleAttribute _attribute = entityType.createSimpleAttribute(_attributeName, String.class);
        _attribute.setSize(64);
        orSession.syncSchemaWithDB(orSchema, false);
        _schema.setOrSchema(orSchema);
        _schema.save();
   } catch (Exception e) {
        throw new RuntimeException(e);
   } finally {
        try {
            _schema.setLock(false, false);
        } catch (Exception ignore) {
            // catch exception
        }
   }
  
   return ;
   }

    _context = context;

    createNewIR();

Später sollen dann die Inhalte aus einem Formularfeld (CMS_INPUT_TEXT) in dem Feld gespeichert werden.

0 Kudos
12 Replies

Hi,

normal ist die da. Siehe Bild aus dem letzen Kommentar von mir.

Ich habe jetzt mal alles ausprobiert.

        Language lang = project.getMasterLanguage();

        ContentStoreRoot contentStore = (ContentStoreRoot) us.getStore(

                Store.Type.CONTENTSTORE, false);

        Content2 cont = (Content2) contentStore.getStoreElement(

                "TestSchema.pressreleases_1", Content2.UID_TYPE);

        // Hier ist cont immer leer.

        EntityType entityType = cont.getEntityType();

        Session sess = cont.getSchema().getSession();

Auch hier bekomme ich kein cont .

Ich weiß nicht mehr weiter.

0 Kudos

Hi Daniel,

du möchtest mit contentStore.getStoreElement() ja auch ein StoreElement aus dem ContentStore bekommen (= eine Datenquelle) und kein StoreElement aus dem TemplateStore (=Datenbankvorlage in diesem Fall). Du suchst, wie von Sebastian bereits gesagt, nach der uid aus dem TemplateStore, müsstest aber nach der uid der Datenquelle suchen....

Das angehängt Bild zeigt ebenfalls nur den Templatestore.

Viele Grüße

Rouven

Hallo Rouven,

jetzt habe ich verstanden was ich falsch gemacht habe. Jetzt funktioniert mein Skript auch.

Vielen Dank.

0 Kudos