Created
April 9, 2019 09:15
-
-
Save hugithordarson/58609b408b496beef4ede4762866ec16 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package x; | |
import java.util.HashMap; | |
import java.util.List; | |
import java.util.Map; | |
import java.util.Objects; | |
import org.apache.cayenne.DataObject; | |
import org.apache.cayenne.ObjectContext; | |
import org.apache.cayenne.ObjectId; | |
import org.apache.cayenne.configuration.server.ServerRuntime; | |
import org.apache.cayenne.map.ObjAttribute; | |
import org.apache.cayenne.map.ObjEntity; | |
import org.apache.cayenne.query.ObjectSelect; | |
import is.rebbi.core.kvc.KVC; | |
import nb.NBCore; | |
import nb.util.Props; | |
import nb.util.Props.Mode; | |
public class CompareData { | |
public static void main( String[] args ) { | |
final ServerRuntime informixRuntime = NBCore.createServerRuntime( new Props( Mode.Production ) ); | |
final ServerRuntime postgresRuntime = NBCore.createServerRuntime( new Props( Mode.Development ) ); | |
for( ObjEntity objEntity : informixRuntime.getDataDomain().getEntityResolver().getObjEntities() ) { | |
compareObjEntity( objEntity, informixRuntime, postgresRuntime ); | |
} | |
} | |
private static void compareObjEntity( ObjEntity objEntity, ServerRuntime informixRuntime, ServerRuntime postgresRuntime ) { | |
final ObjectContext informixContext = informixRuntime.newContext(); | |
final ObjectContext postgresContext = postgresRuntime.newContext(); | |
final List<DataObject> informixObjects = (List<DataObject>)ObjectSelect | |
.query( objEntity.getJavaClass() ) | |
.select( informixContext ); | |
final List<DataObject> postgresObjects = (List<DataObject>)ObjectSelect | |
.query( objEntity.getJavaClass() ) | |
.select( postgresContext ); | |
final Map<ObjectId, DataObject> postgresObjectMap = new HashMap<>(); | |
for( DataObject dataObject : postgresObjects ) { | |
postgresObjectMap.put( dataObject.getObjectId(), dataObject ); | |
} | |
for( DataObject informixObject : informixObjects ) { | |
final DataObject postgresObject = postgresObjectMap.get( informixObject.getObjectId() ); | |
if( postgresObject == null ) { | |
System.out.println( "missing;" + informixObject.getObjectId() ); | |
} | |
else { | |
compareAttributeValues( objEntity, informixObject, postgresObject ); | |
} | |
} | |
} | |
private static boolean compareAttributeValues( ObjEntity objEntity, DataObject do1, DataObject do2 ) { | |
for( ObjAttribute objAttribute : objEntity.getAttributes() ) { | |
final Object value1 = KVC.valueForKey( do1, objAttribute.getName() ); | |
final Object value2 = KVC.valueForKey( do2, objAttribute.getName() ); | |
if( !Objects.equals( value1, value2 ) ) { | |
System.out.println( "nonmatching;" + do1.getObjectId() + ";" + objEntity.getDbEntityName() + ";" + objAttribute.getDbAttributeName() + ";'" + value1 + "';'" + value2 + "'" ); | |
return false; | |
} | |
} | |
return true; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment