Search in sources :

Example 6 with Annotation

use of com.manydesigns.portofino.model.Annotation in project Portofino by ManyDesigns.

the class PersistenceTest method testAnnotations.

public void testAnnotations() {
    Session session = persistence.getSession("hibernatetest");
    try {
        session.createNamedQuery("all_questions", Map.class).list();
        fail("Exception expected");
    } catch (Exception e) {
    }
    Table table = DatabaseLogic.findTableByName(persistence.getModel(), "hibernatetest", "PUBLIC", "DOMANDA");
    assertNotNull(table);
    Annotation nq = new Annotation(table, "javax.persistence.NamedQuery");
    nq.setProperties(Arrays.asList(new Property("name", "all_questions"), new Property("query", "from domanda")));
    table.getAnnotations().add(nq);
    persistence.initModel();
    session = persistence.getSession("hibernatetest");
    List<Object> allQuestions = session.createNamedQuery("all_questions", Object.class).list();
    assertEquals(2, allQuestions.size());
}
Also used : FileObject(org.apache.commons.vfs2.FileObject) Property(com.manydesigns.portofino.model.Property) UnknownEntityTypeException(org.hibernate.UnknownEntityTypeException) SQLException(java.sql.SQLException) Annotation(com.manydesigns.portofino.model.Annotation) Session(org.hibernate.Session)

Example 7 with Annotation

use of com.manydesigns.portofino.model.Annotation in project Portofino by ManyDesigns.

the class DatabaseSyncer method copyAnnotations.

protected void copyAnnotations(Annotated source, Annotated target) {
    for (Annotation ann : source.getAnnotations()) {
        Annotation annCopy = new Annotation();
        annCopy.setParent(target);
        annCopy.setType(ann.getType());
        annCopy.setValues(ann.getValues());
        annCopy.setProperties(ann.getProperties());
        target.getAnnotations().add(annCopy);
    }
}
Also used : Annotation(com.manydesigns.portofino.model.Annotation)

Example 8 with Annotation

use of com.manydesigns.portofino.model.Annotation in project Portofino by ManyDesigns.

the class TablesAction method saveTable.

@Path("{db}/{schema}/{table}")
@PUT
public void saveTable(@PathParam("db") String db, @PathParam("schema") String schema, @PathParam("table") String tableName, TableInfo tableInfo) throws Exception {
    Table table = tableInfo.table;
    Table existing = DatabaseLogic.findTableByName(persistence.getModel(), db, schema, tableName);
    if (existing == null) {
        throw new WebApplicationException(Response.Status.NOT_FOUND);
    }
    existing.setEntityName(table.getEntityName());
    existing.setJavaClass(table.getJavaClass());
    existing.setShortName(table.getShortName());
    for (Column column : table.getColumns()) {
        Column c2 = DatabaseLogic.findColumnByName(existing, column.getColumnName());
        BeanUtils.copyProperties(column, c2);
        c2.setTable(existing);
    }
    existing.getColumns().sort(Comparator.comparingInt(c -> table.getColumns().indexOf(DatabaseLogic.findColumnByName(table, c.getColumnName()))));
    existing.getSelectionProviders().clear();
    existing.getSelectionProviders().addAll(table.getSelectionProviders());
    existing.getSelectionProviders().forEach(sp -> {
        sp.setFromTable(existing);
        sp.getReferences().forEach(r -> r.setOwner(sp));
    });
    existing.removeAnnotation(EntityPermissions.class);
    Permissions permissions = tableInfo.permissions;
    if (permissions != null) {
        permissions.init();
        String allGroup = SecurityLogic.getAllGroup(portofinoConfiguration);
        List<String> create = new ArrayList<>();
        List<String> read = new ArrayList<>();
        List<String> update = new ArrayList<>();
        List<String> delete = new ArrayList<>();
        permissions.getActualPermissions().forEach((group, perms) -> {
            String actualGroup = group.equals(allGroup) ? "*" : group;
            if (perms.contains(AbstractCrudAction.PERMISSION_CREATE)) {
                create.add(actualGroup);
            }
            if (perms.contains(AbstractCrudAction.PERMISSION_READ)) {
                read.add(actualGroup);
            }
            if (perms.contains(AbstractCrudAction.PERMISSION_EDIT)) {
                update.add(actualGroup);
            }
            if (perms.contains(AbstractCrudAction.PERMISSION_DELETE)) {
                delete.add(actualGroup);
            }
        });
        if (create.size() == 1 && create.contains("*") && read.size() == 1 && read.contains("*") && update.size() == 1 && update.contains("*") && delete.size() == 1 && delete.contains("*")) {
        // Don't add the annotation: permissions have their default values
        } else {
            Annotation newAnn = new Annotation(EntityPermissions.class);
            newAnn.setProperty("create", StringUtils.join(create, ", "));
            newAnn.setProperty("read", StringUtils.join(read, ", "));
            newAnn.setProperty("update", StringUtils.join(update, ", "));
            newAnn.setProperty("delete", StringUtils.join(delete, ", "));
            existing.addAnnotation(newAnn);
        }
    }
    persistence.initModel();
    persistence.saveXmlModel();
}
Also used : ColumnAndAnnotations(com.manydesigns.portofino.upstairs.actions.database.tables.support.ColumnAndAnnotations) Persistence(com.manydesigns.portofino.persistence.Persistence) StringUtils(org.apache.commons.lang.StringUtils) java.util(java.util) AbstractResourceAction(com.manydesigns.portofino.resourceactions.AbstractResourceAction) MutablePropertyAccessor(com.manydesigns.elements.reflection.MutablePropertyAccessor) LoggerFactory(org.slf4j.LoggerFactory) Autowired(org.springframework.beans.factory.annotation.Autowired) SimpleDateFormat(java.text.SimpleDateFormat) AbstractCrudAction(com.manydesigns.portofino.resourceactions.crud.AbstractCrudAction) com.manydesigns.elements.annotations(com.manydesigns.elements.annotations) BigDecimal(java.math.BigDecimal) Form(com.manydesigns.elements.forms.Form) Property(com.manydesigns.portofino.model.Property) MediaType(javax.ws.rs.core.MediaType) EntityPermissions(com.manydesigns.portofino.resourceactions.crud.security.EntityPermissions) JSONStringer(org.json.JSONStringer) MapKeyValueAccessor(com.manydesigns.elements.MapKeyValueAccessor) Permissions(com.manydesigns.portofino.actions.Permissions) BigInteger(java.math.BigInteger) Annotation(com.manydesigns.portofino.model.Annotation) RequiresAdministrator(com.manydesigns.portofino.security.RequiresAdministrator) SecurityLogic(com.manydesigns.portofino.security.SecurityLogic) Logger(org.slf4j.Logger) DisplayMode(com.manydesigns.elements.options.DisplayMode) FileSystemException(org.apache.commons.vfs2.FileSystemException) MutableClassAccessor(com.manydesigns.elements.reflection.MutableClassAccessor) Group(com.manydesigns.portofino.actions.Group) com.manydesigns.portofino.model.database(com.manydesigns.portofino.model.database) FileObject(org.apache.commons.vfs2.FileObject) RequestMessages(com.manydesigns.elements.messages.RequestMessages) TableInfo(com.manydesigns.portofino.upstairs.actions.support.TableInfo) javax.ws.rs(javax.ws.rs) Response(javax.ws.rs.core.Response) SelectImpl(com.manydesigns.elements.annotations.impl.SelectImpl) SearchDisplayMode(com.manydesigns.elements.options.SearchDisplayMode) FormBuilder(com.manydesigns.elements.forms.FormBuilder) FileType(org.apache.commons.vfs2.FileType) EntityPermissionsChecks(com.manydesigns.portofino.resourceactions.crud.security.EntityPermissionsChecks) RequiresAuthentication(org.apache.shiro.authz.annotation.RequiresAuthentication) NotNull(org.jetbrains.annotations.NotNull) ReflectionUtil(com.manydesigns.elements.util.ReflectionUtil) ArrayUtils(org.apache.commons.lang.ArrayUtils) BeanUtils(org.springframework.beans.BeanUtils) EntityPermissions(com.manydesigns.portofino.resourceactions.crud.security.EntityPermissions) Permissions(com.manydesigns.portofino.actions.Permissions) Annotation(com.manydesigns.portofino.model.Annotation)

Aggregations

Annotation (com.manydesigns.portofino.model.Annotation)8 Property (com.manydesigns.portofino.model.Property)5 FileObject (org.apache.commons.vfs2.FileObject)4 MapKeyValueAccessor (com.manydesigns.elements.MapKeyValueAccessor)3 Form (com.manydesigns.elements.forms.Form)3 FormBuilder (com.manydesigns.elements.forms.FormBuilder)3 BigInteger (java.math.BigInteger)3 SimpleDateFormat (java.text.SimpleDateFormat)3 com.manydesigns.elements.annotations (com.manydesigns.elements.annotations)2 SelectImpl (com.manydesigns.elements.annotations.impl.SelectImpl)2 RequestMessages (com.manydesigns.elements.messages.RequestMessages)2 DisplayMode (com.manydesigns.elements.options.DisplayMode)2 SearchDisplayMode (com.manydesigns.elements.options.SearchDisplayMode)2 MutableClassAccessor (com.manydesigns.elements.reflection.MutableClassAccessor)2 MutablePropertyAccessor (com.manydesigns.elements.reflection.MutablePropertyAccessor)2 ReflectionUtil (com.manydesigns.elements.util.ReflectionUtil)2 Group (com.manydesigns.portofino.actions.Group)2 Permissions (com.manydesigns.portofino.actions.Permissions)2 com.manydesigns.portofino.model.database (com.manydesigns.portofino.model.database)2 Persistence (com.manydesigns.portofino.persistence.Persistence)2