Example usage for org.hibernate.mapping Map.Entry getKey

List of usage examples for org.hibernate.mapping Map.Entry getKey

Introduction

In this page you can find the example usage for org.hibernate.mapping Map.Entry getKey.

Prototype

public KeyValue getKey() 

Source Link

Usage

From source file:alma.acs.tmcdb.translator.AbstractReverseEngineeringStrategy.java

License:Open Source License

@SuppressWarnings("unchecked")
@Override/* w w  w.java  2  s .  c om*/
public Map tableToMetaAttributes(TableIdentifier tableIdentifier) {
    Map map = super.tableToMetaAttributes(tableIdentifier);

    if (map == null)
        map = new HashMap<String, MetaAttribute>();

    // Check if table contains a XMLCLOB column
    for (int i = 0; i < inheritanceTranslators.length; i++) {
        String tableName = tableIdentifier.getName();
        if (inheritanceTranslators[i].hasXmlClobType(tableName)) {
            MetaAttribute mattr = new MetaAttribute(HAS_XML_CLOB_TYPE);
            mattr.addValue("true");
            map.put(HAS_XML_CLOB_TYPE, mattr);
            break;
        }
    }

    // Check if table has a generated ID, necessary to generate the GenericGenerator custom annotation
    for (int i = 0; i < inheritanceTranslators.length; i++) {
        String tableName = tableIdentifier.getName();
        String sequence = inheritanceTranslators[i].getSequenceForTable(tableName);
        if (sequence != null) {
            MetaAttribute mattr = new MetaAttribute(ORACLE_SEQUENCE);
            mattr.addValue(sequence);
            map.put(ORACLE_SEQUENCE, mattr);
            break;
        }
    }

    // Check all CHECK constraints for this table
    for (int i = 0; i < inheritanceTranslators.length; i++) {
        String tableName = tableIdentifier.getName().toLowerCase();
        if (inheritanceTranslators[i].getEnumTypesForTable(tableName) != null) {

            Map<String, String> typesForTable = inheritanceTranslators[i].getEnumTypesForTable(tableName);
            if (typesForTable == null)
                continue;

            MetaAttribute mattr2 = new MetaAttribute(HAS_ENUM_TYPES);
            mattr2.addValue("true");
            map.put(HAS_ENUM_TYPES, mattr2);

            mattr2 = new MetaAttribute(ENUM_TYPES);
            Iterator<Map.Entry<String, String>> it = typesForTable.entrySet().iterator();
            StringBuilder sb = new StringBuilder();
            while (it.hasNext()) {
                Map.Entry<String, String> entry = it.next();
                sb.append(entry.getKey());
                sb.append("|");
                sb.append(entry.getValue());
                if (it.hasNext())
                    sb.append(",");
            }
            mattr2.addValue(sb.toString());
            map.put(ENUM_TYPES, mattr2);
        }
    }

    // Check if table is superclass or child class
    for (int i = 0; i < inheritanceTranslators.length; i++) {
        String tableName = tableIdentifier.getName().toLowerCase();
        String superClass = inheritanceTranslators[i].getSuperTable(tableName);
        if (superClass != null) {
            MetaAttribute mattr = new MetaAttribute(MetaAttributeConstants.EXTENDS);
            mattr.addValue(superClass);
            map.put("extends", mattr);
            return map;
        } else {
            MetaAttribute mattr = new MetaAttribute(MetaAttributeConstants.EXTENDS);
            mattr.addValue("alma.acs.tmcdb.translator.TmcdbObject");
            map.put("extends", mattr);
            for (int j = 0; j != inheritanceTranslators.length; j++) {
                if (inheritanceTranslators[j].isSuperClass(tableName)) {
                    mattr = new MetaAttribute(IS_SUPER_CLASS);
                    mattr.addValue("true");
                    map.put(IS_SUPER_CLASS, mattr);
                    return map;
                }
            }
        }

    }

    return map;
}

From source file:com.amalto.core.storage.hibernate.HibernateStorage.java

License:Open Source License

@Override
public void update(Iterable<DataRecord> records) {
    assertPrepared();/*from w  ww.ja  v a 2s .  c  o  m*/
    Session session = this.getCurrentSession();
    try {
        storageClassLoader.bind(Thread.currentThread());
        DataRecordConverter<Object> converter = new ObjectDataRecordConverter(storageClassLoader, session);
        for (DataRecord currentDataRecord : records) {
            TypeMapping mapping = mappingRepository.getMappingFromUser(currentDataRecord.getType());
            Wrapper o = (Wrapper) converter.convert(currentDataRecord, mapping);
            if (session.contains(o) && session.isReadOnly(o)) { // A read only instance for an update?
                // Session#setReadOnly(...) does not always work as expected (especially in case of compound keys
                // see TMDM-7014).
                session.evict(o);
                o = (Wrapper) converter.convert(currentDataRecord, mapping);
            }
            DataRecordMetadata recordMetadata = currentDataRecord.getRecordMetadata();
            Map<String, String> recordProperties = recordMetadata.getRecordProperties();
            if (!ObjectUtils.equals(recordMetadata.getTaskId(), o.taskId())) {
                o.taskId(recordMetadata.getTaskId());
            }
            for (Map.Entry<String, String> currentProperty : recordProperties.entrySet()) {
                String key = currentProperty.getKey();
                String value = currentProperty.getValue();
                ComplexTypeMetadata database = mapping.getDatabase();
                if (database.hasField(key)) {
                    Object convertedValue = StorageMetadataUtils.convert(value, database.getField(key));
                    if (!ObjectUtils.equals(convertedValue, o.get(key))) {
                        o.set(key, convertedValue);
                    }
                } else {
                    throw new IllegalArgumentException("Can not store value '" + key //$NON-NLS-1$
                            + "' because there is no database field '" + key + "' in type '" + mapping.getName() //$NON-NLS-1$ //$NON-NLS-2$
                            + "' (storage is '" + toString() + "')"); //$NON-NLS-1$ //$NON-NLS-2$
                }
            }
            session.saveOrUpdate(o);
            if (FLUSH_ON_LOAD && session.getStatistics().getEntityCount() % batchSize == 0) {
                // Periodically flush objects to avoid using too much memory.
                session.flush();
            }
        }
    } catch (ConstraintViolationException e) {
        throw new com.amalto.core.storage.exception.ConstraintViolationException(e);
    } catch (PropertyValueException e) {
        throw new RuntimeException("Invalid value in record to update.", e); //$NON-NLS-1$
    } catch (NonUniqueObjectException e) {
        throw new RuntimeException("Attempted to update multiple times same record within same transaction.", //$NON-NLS-1$
                e);
    } catch (Exception e) {
        throw new RuntimeException("Exception occurred during update.", e); //$NON-NLS-1$
    } finally {
        this.releaseSession();
        storageClassLoader.unbind(Thread.currentThread());
    }
}

From source file:com.amalto.core.storage.hibernate.HibernateStorage.java

License:Open Source License

public Set<ComplexTypeMetadata> findTypesToDelete(boolean force, Compare.DiffResults diffResults) {
    ImpactAnalyzer analyzer = getImpactAnalyzer();
    Map<ImpactAnalyzer.Impact, List<Change>> impacts = getImpactsResult(diffResults);
    Set<ComplexTypeMetadata> typesToDrop = new HashSet<ComplexTypeMetadata>();
    for (Map.Entry<ImpactAnalyzer.Impact, List<Change>> impactCategory : impacts.entrySet()) {
        ImpactAnalyzer.Impact category = impactCategory.getKey();
        List<Change> changes = impactCategory.getValue();
        switch (category) {
        case HIGH:
            if (!changes.isEmpty()) {
                if (force) {
                    analyzeChanges(typesToDrop, changes);
                } else {
                    // High changes without force=true is an error
                    throw new IllegalArgumentException("Some changes require force parameter."); //$NON-NLS-1$
                }/*www.  j a  v  a2 s.com*/
            }
        case MEDIUM:
            if (!impactCategory.getValue().isEmpty()) {
                if (force) {
                    analyzeChanges(typesToDrop, changes);
                }
                // Change from high change: no exception if force=false (no schema update).
            }
            break;
        case LOW:
            if (LOGGER.isTraceEnabled()) {
                for (Change change : impactCategory.getValue()) {
                    LOGGER.trace("Change '" + change.getMessage(Locale.getDefault()) //$NON-NLS-1$
                            + "' does NOT require a database schema update."); //$NON-NLS-1$
                }
                break;
            }
        }
    }
    return typesToDrop;
}

From source file:com.amalto.core.storage.hibernate.HibernateStorage.java

License:Open Source License

@SuppressWarnings("rawtypes")
@Override/*from  www .j  a v a 2s .  c o m*/
public void delete(Expression userQuery) {
    Session session = this.getCurrentSession();
    try {
        storageClassLoader.bind(Thread.currentThread());
        // Session session = factory.getCurrentSession();
        userQuery = userQuery.normalize(); // First do a normalize for correct optimization detection.
        // Check if optimized delete for one type (and no filter) is applicable
        if (userQuery instanceof Select) {
            Select select = (Select) userQuery;
            List<ComplexTypeMetadata> types = select.getTypes();
            if (types.size() == 1 && select.getCondition() == null) {
                FlushMode previousFlushMode = session.getFlushMode();
                try {
                    session.setFlushMode(FlushMode.ALWAYS); // Force Hibernate to actually send SQL query to
                                                            // database during delete.
                    ComplexTypeMetadata mainType = types.get(0);
                    TypeMapping mapping = mappingRepository.getMappingFromUser(mainType);
                    // Compute (and eventually sort) types to delete
                    List<ComplexTypeMetadata> typesToDelete;
                    MetadataRepository internalRepository = typeMappingRepository.getInternalRepository();
                    if (mapping instanceof ScatteredTypeMapping) {
                        MetadataVisitor<List<ComplexTypeMetadata>> transitiveClosure = new TypeTransitiveClosure();
                        List<ComplexTypeMetadata> typeClosure = mapping.getDatabase().accept(transitiveClosure);
                        typesToDelete = MetadataUtils.sortTypes(internalRepository, typeClosure);
                    } else {
                        Collection<ComplexTypeMetadata> subTypes = mapping.getDatabase().getSubTypes();
                        if (subTypes.isEmpty()) {
                            typesToDelete = Collections.singletonList(mapping.getDatabase());
                        } else {
                            typesToDelete = new ArrayList<ComplexTypeMetadata>(subTypes.size() + 1);
                            typesToDelete.add(mapping.getDatabase());
                            typesToDelete.addAll(subTypes);
                        }
                    }
                    Map<ComplexTypeMetadata, Map<String, List>> recordsToDeleteMap = new HashMap<ComplexTypeMetadata, Map<String, List>>();
                    for (ComplexTypeMetadata typeToDelete : typesToDelete) {
                        InboundReferences inboundReferences = new InboundReferences(typeToDelete);
                        Set<ReferenceFieldMetadata> references = internalRepository.accept(inboundReferences);
                        // Empty values from intermediate tables to this non instantiable type and unset inbound
                        // references
                        if (typeToDelete.equals(mainType)) {
                            for (ReferenceFieldMetadata reference : references) {
                                if (reference.isMany()) {
                                    // No need to check for mandatory collections of references since constraint
                                    // cannot be expressed in db schema
                                    String formattedTableName = tableResolver.getCollectionTable(reference);
                                    session.createSQLQuery("delete from " + formattedTableName).executeUpdate(); //$NON-NLS-1$
                                } else {
                                    String referenceTableName = tableResolver
                                            .get(reference.getContainingType());
                                    if (referenceTableName.startsWith("X_ANONYMOUS")) { //$NON-NLS-1$
                                        session.createSQLQuery("delete from " + referenceTableName) //$NON-NLS-1$
                                                .executeUpdate();
                                    }
                                }
                            }
                        } else {
                            for (ReferenceFieldMetadata reference : references) {
                                if (reference.getContainingType().equals(mainType)) {
                                    HashMap<String, List> fieldsCondition = new HashMap<>();
                                    if (reference.isMany()) {
                                        // No need to check for mandatory collections of references since constraint
                                        // cannot
                                        // be expressed in db schema
                                        String formattedTableName = tableResolver.getCollectionTable(reference);
                                        session.createSQLQuery("delete from " + formattedTableName) //$NON-NLS-1$
                                                .executeUpdate();
                                    } else {
                                        String referenceTableName = tableResolver
                                                .get(reference.getContainingType());
                                        if (reference.getReferencedField() instanceof CompoundFieldMetadata) {
                                            FieldMetadata[] fields = ((CompoundFieldMetadata) reference
                                                    .getReferencedField()).getFields();
                                            for (FieldMetadata field : fields) {
                                                List list = session.createSQLQuery("select " //$NON-NLS-1$
                                                        + tableResolver.get(field, reference.getName())
                                                        + " from " //$NON-NLS-1$
                                                        + referenceTableName).list();
                                                if (list == null || list.isEmpty()) {
                                                    continue;
                                                } else {
                                                    fieldsCondition.put(
                                                            tableResolver.get(reference.getReferencedField()),
                                                            list);
                                                }
                                            }
                                        } else {
                                            List list = session.createSQLQuery("select " //$NON-NLS-1$
                                                    + tableResolver.get(reference.getReferencedField(),
                                                            reference.getName())
                                                    + " from " + referenceTableName).list(); //$NON-NLS-1$
                                            if (list == null || list.isEmpty()) {
                                                continue;
                                            } else {
                                                fieldsCondition.put(
                                                        tableResolver.get(reference.getReferencedField()),
                                                        list);
                                            }
                                        }
                                        recordsToDeleteMap.put(typeToDelete, fieldsCondition);
                                    }
                                }
                            }
                        }
                    }
                    deleteData(mapping.getDatabase(), new HashMap<String, List>(), mapping);
                    for (Map.Entry<ComplexTypeMetadata, Map<String, List>> entry : recordsToDeleteMap
                            .entrySet()) {
                        // Empty values in type isMany=true reference
                        deleteData(entry.getKey(), entry.getValue(), mapping);
                    }
                } finally {
                    session.setFlushMode(previousFlushMode);
                }
                return;
            }
        }
        // Generic fall back for deletions (filter)
        if (userQuery instanceof Select) {
            ((Select) userQuery).setForUpdate(true);
        }
        Iterable<DataRecord> records = internalFetch(session, userQuery,
                Collections.<ResultsCallback>emptySet());
        for (DataRecord currentDataRecord : records) {
            ComplexTypeMetadata currentType = currentDataRecord.getType();
            List<ComplexTypeMetadata> types = new ArrayList<>();
            if (userQuery instanceof Select) {
                types.addAll(((Select) userQuery).getTypes());
            }
            if (types.isEmpty() || types.contains(currentType)) {
                TypeMapping mapping = mappingRepository.getMappingFromUser(currentType);
                if (mapping == null) {
                    throw new IllegalArgumentException(
                            "Type '" + currentType.getName() + "' does not have a database mapping."); //$NON-NLS-1$ //$NON-NLS-2$
                }
                Class<?> clazz = storageClassLoader.getClassFromType(mapping.getDatabase());

                Serializable idValue;
                Collection<FieldMetadata> keyFields = currentType.getKeyFields();
                if (keyFields.size() == 1) {
                    idValue = (Serializable) currentDataRecord.get(keyFields.iterator().next());
                } else {
                    List<Object> compositeIdValues = new LinkedList<Object>();
                    for (FieldMetadata keyField : keyFields) {
                        compositeIdValues.add(currentDataRecord.get(keyField));
                    }
                    idValue = ObjectDataRecordConverter.createCompositeId(storageClassLoader, clazz,
                            compositeIdValues);
                }

                Wrapper object = (Wrapper) session.get(clazz, idValue, LockOptions.READ);
                if (object != null) {
                    session.delete(object);
                } else {
                    LOGGER.warn("Instance of type '" + currentType.getName() + "' and ID '" + idValue.toString() //$NON-NLS-1$ //$NON-NLS-2$
                            + "' has already been deleted within same transaction."); //$NON-NLS-1$
                }
            }
        }
    } catch (ConstraintViolationException e) {
        throw new com.amalto.core.storage.exception.ConstraintViolationException(e);
    } catch (HibernateException e) {
        throw new RuntimeException(e);
    } finally {
        this.releaseSession();
        storageClassLoader.unbind(Thread.currentThread());
    }
}

From source file:com.amalto.core.storage.hibernate.LiquibaseSchemaAdapter.java

License:Open Source License

private List<AbstractChange> analyzeRemoveChange(DiffResults diffResults, TableResolver tableResolver) {
    List<AbstractChange> changeActionList = new ArrayList<AbstractChange>();

    Map<String, List<String>> dropColumnMap = new HashMap<String, List<String>>();
    for (RemoveChange removeAction : diffResults.getRemoveChanges()) {

        MetadataVisitable element = removeAction.getElement();
        if (element instanceof FieldMetadata) {
            FieldMetadata field = (FieldMetadata) element;
            if (!field.isMandatory()) {

                String tableName = tableResolver.get(field.getContainingType().getEntity()).toLowerCase();
                String columnName = tableResolver.get(field);

                List<String> columnList = dropColumnMap.get(tableName);
                if (columnList == null) {
                    columnList = new ArrayList<String>();
                }// w ww.  j av a2s. c  o m
                columnList.add(columnName);
                dropColumnMap.put(tableName, columnList);
            }
        }
    }

    for (Map.Entry<String, List<String>> entry : dropColumnMap.entrySet()) {
        List<String> columns = entry.getValue();
        List<ColumnConfig> columnConfigList = new ArrayList<ColumnConfig>();
        for (String columnName : columns) {
            columnConfigList.add(new ColumnConfig(new liquibase.structure.core.Column(columnName)));
        }

        DropColumnChange dropColumnChange = new DropColumnChange();
        dropColumnChange.setTableName(entry.getKey());
        dropColumnChange.setColumns(columnConfigList);

        changeActionList.add(dropColumnChange);
    }
    return changeActionList;
}

From source file:com.fiveamsolutions.nci.commons.audit.AuditLogInterceptor.java

License:Open Source License

/**
 * does not care about order./*from   ww w.ja v  a 2 s  .  c  o  m*/
 */
private static boolean equalsMap(Map<?, ?> a, Map<?, ?> b) {
    if (ObjectUtils.equals(a, b)) {
        return true;
    }
    if (a == null || b == null || a.size() != b.size()) {
        return false;
    }
    for (Map.Entry<?, ?> e : a.entrySet()) {
        // some maps may allow null as values
        if (!b.containsKey(e.getKey())) {
            return false;
        }
        Object vb = b.get(e.getKey());
        if (!ObjectUtils.equals(e.getValue(), vb)) {
            return false;
        }
    }
    return true;
}

From source file:com.github.gekoh.yagen.ddl.CreateDDL.java

License:Apache License

private void addComments(StringBuffer buf, String tableName, Map<String, String> comments) {
    StringBuilder ddl = new StringBuilder();
    ddl.append("begin\n");
    for (Map.Entry<String, String> columnComment : comments.entrySet()) {
        String encoded = encodeComment(columnComment.getValue());
        ddl.append("execute immediate 'comment on ");
        if (columnComment.getKey() == null) {
            ddl.append("table ").append(tableName);
        } else {// w  w  w. ja  v  a2s . c  o  m
            ddl.append("column ").append(tableName).append(".").append(columnComment.getKey());
        }
        ddl.append(" is ''").append(encoded).append("''';\n");
    }
    ddl.append("end;");

    getProfile().duplex(ObjectType.COMMENT, null, ddl.toString());

    buf.append(STATEMENT_SEPARATOR).append(ddl.toString()).append("\n/");
}

From source file:com.github.shyiko.rook.target.hibernate4.fulltextindex.PrimaryKey.java

License:Apache License

public PrimaryKey(PrimaryKey primaryKey, Map<String, Integer> columnIndexByNameMap) {
    this.entityClass = primaryKey.entityClass;
    KeyColumn[] positionWithinRow = new KeyColumn[columnIndexByNameMap.size()];
    int index = 0;
    for (Map.Entry<String, Integer> entry : columnIndexByNameMap.entrySet()) {
        positionWithinRow[index] = new KeyColumn(entry.getKey(), entry.getValue());
    }/*from  w  w w . j  a v a2 s .com*/
    this.getter = primaryKey.getter;
    this.positionWithinRow = positionWithinRow;
}

From source file:com.hihframework.core.utils.BeanUtils.java

License:Apache License

@SuppressWarnings("unchecked")
public static Map<String, Object> bean2Map(Object bean) {
    Map<String, Object> map = new HashMap<String, Object>();
    JSONObject json = JSONObject.fromObject(bean, JsonUtil.COLLECTION_FILTER);
    for (Iterator<Map.Entry<String, Object>> it = json.entrySet().iterator(); it.hasNext();) {
        Map.Entry<String, Object> next = it.next();
        map.put(next.getKey(), next.getValue());
    }/*from   www  . j  a v a2 s  .c  o m*/
    return map;
}

From source file:com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryServiceImpl.java

License:Open Source License

@Transactional(propagation = Propagation.REQUIRED)
public Map<Class, Integer> loadResourcesMapCount(ExecutionContext context, String text,
        List<Class> resourceTypeList, List<SearchFilter> filters, Map<String, SearchFilter> typeSpecificFilters,
        SearchSorter sorter, TransformerFactory transformerFactory) {
    if (transformerFactory == null) {
        throw new IllegalArgumentException("Transformer factory is null.");
    }//from  ww  w  .ja va2  s .  c  o m

    Map<Class, Integer> result = new HashMap<Class, Integer>();

    Map<Class, Class> typeToPersistentClassMap = getTypeToPersistentClassMap(resourceTypeList);

    for (Map.Entry<Class, Class> entry : typeToPersistentClassMap.entrySet()) {
        SearchCriteria criteria = getResourcesListCriteria(context, text, entry.getKey(), entry.getValue(),
                filters, typeSpecificFilters);
        criteria.setProjection(Projections.countDistinct("id"));

        //            if (sorter != null) {
        //                sorter.applyOrder(entry.getKey().getName(), context, criteria);
        //            }

        List resourceList = getHibernateTemplate().findByCriteria(criteria);

        ResultTransformer transformer = transformerFactory.createTransformer(filters, sorter);
        if (transformer != null) {
            result.put(entry.getKey(), transformer.transformToCount(resourceList));
        } else {
            throw new IllegalArgumentException("Result transformer is null.");
        }
    }

    return result;
}