package crmdna.datamigration; import crmdna.attendance.CheckInEntity; import crmdna.client.Client; import crmdna.client.CustomFieldsEntity; import crmdna.client.isha.IshaConfigEntity; import crmdna.common.DummyTestEntity; import crmdna.common.config.ConfigCRMDNAEntity; import crmdna.counter.ShardEntity; import crmdna.group.GroupEntity; import crmdna.helpandsupport.ConfigHelpEntity; import crmdna.hr.DepartmentEntity; import crmdna.interaction.InteractionEntity; import crmdna.inventory.*; import crmdna.list.ListEntity; import crmdna.mail2.MailContentEntity; import crmdna.mail2.SentMailEntity; import crmdna.mail2.TagSetEntity; import crmdna.mail2.URLEntity; import crmdna.member.MemberEntity; import crmdna.objectstore.ObjectEntity; import crmdna.participant.ParticipantEntity; import crmdna.payment.TokenEntity; import crmdna.payment2.PaymentEntity; import crmdna.practice.PracticeEntity; import crmdna.program.ProgramEntity; import crmdna.programtype.ProgramTypeEntity; import crmdna.registration.DiscountEntity; import crmdna.registration.RegistrationEntity; import crmdna.registration.TransactionEntity; import crmdna.sequence.SequenceEntity; import crmdna.sessionpass.SessionPassEntity; import crmdna.sessionpass.SubscriptionEntity; import crmdna.teacher.TeacherEntity; import crmdna.user.UserCore; import crmdna.user.UserEntity; import crmdna.useractivity.UserActivityEntity; import crmdna.venue.VenueEntity; import java.util.ArrayList; import java.util.List; import static crmdna.common.AssertUtils.ensure; import static crmdna.common.OfyService.ofy; public class DataMigration { @SuppressWarnings({"rawtypes", "unchecked"}) public static void copyAllEntitiesToAnotherClient(String sourceClient, String targetClient, String login) { // This is to be used for one time data migration for bhairavi yoga. // This code should probably be removed after that ensure(UserCore.isSuperUser(login), "This function can be called only by a super user"); Client.ensureValid(sourceClient); Client.ensureValid(targetClient); List<Class> types = new ArrayList<>(); types.add(GroupEntity.class); types.add(MemberEntity.class); types.add(ProgramEntity.class); types.add(ProgramTypeEntity.class); types.add(VenueEntity.class); types.add(UserEntity.class); types.add(CustomFieldsEntity.class); types.add(SequenceEntity.class); types.add(UserActivityEntity.class); types.add(InteractionEntity.class); types.add(PracticeEntity.class); types.add(TeacherEntity.class); types.add(DummyTestEntity.class); types.add(ParticipantEntity.class); types.add(ShardEntity.class); types.add(CheckInEntity.class); types.add(IshaConfigEntity.class); types.add(RegistrationEntity.class); types.add(DiscountEntity.class); types.add(TokenEntity.class); types.add(TransactionEntity.class); types.add(ConfigCRMDNAEntity.class); types.add(ConfigHelpEntity.class); types.add(InventoryItemTypeEntity.class); types.add(InventoryItemEntity.class); types.add(PackagedInventoryItemEntity.class); types.add(PackagedInventorySalesEntity.class); types.add(PackagedInventoryBatchEntity.class); types.add(InventoryLocationEntity.class); types.add(InventoryTransferEntity.class); types.add(InventoryCheckInEntity.class); types.add(InventoryCheckOutEntity.class); types.add(DepartmentEntity.class); types.add(ObjectEntity.class); types.add(TagSetEntity.class); types.add(SentMailEntity.class); types.add(MailContentEntity.class); types.add(URLEntity.class); types.add(MealCountEntity.class); types.add(SessionPassEntity.class); types.add(SubscriptionEntity.class); types.add(PaymentEntity.class); types.add(ListEntity.class); for (Class type : types) { List<Object> entities = ofy(sourceClient).load().type(type).list(); ofy(targetClient).save().entities(entities); } } }