List of usage examples for org.hibernate.mapping Map.Entry getKey
public KeyValue getKey()
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; }