/** * * Metodo que sincroniza os bancos de dados * * @throws RemoteException */ public void sincronizar() throws RemoteException { List<TeacherTO> endidadesInseridas = new ArrayList<>(); List<TeacherTO> endidadesAtualizadas = new ArrayList<>(); List<TeacherTO> a = postgre.list(); List<TeacherTO> b = mysql.list(); List<TeacherTO> c = datastore.list(); try { tx.prepareAll(); if (mustChanges(a)) { for (TeacherTO teacherTO : a) { if (!b.contains(teacherTO) || !c.contains(teacherTO)) { endidadesInseridas.add(teacherTO); } else { endidadesAtualizadas.add(teacherTO); } } add(endidadesInseridas, mysql); add(endidadesInseridas, datastore); update(endidadesAtualizadas, mysql); update(endidadesAtualizadas, datastore); } else if (mustChanges(b)) { for (TeacherTO teacherTO : b) { endidadesAtualizadas.add(teacherTO); } update(endidadesAtualizadas, postgre); update(endidadesAtualizadas, datastore); } else if (mustChanges(c)) { for (TeacherTO teacherTO : c) { endidadesAtualizadas.add(teacherTO); } update(endidadesAtualizadas, mysql); update(endidadesAtualizadas, postgre); } else { throw new RemoteException("Erro ao sincronizar bancos"); } tx.commitAll(); mrm.setPropBancoHash("bancoHash", gh.hashBanco(c)); } catch (RemoteException e) { e.printStackTrace(); tx.rollbackAll(); } }
/** * * Método que verifica se houve mudanças em um banco de dados * * @param list * @return */ public Boolean mustChanges(List<TeacherTO> list) { if (mrm.getProp("bancoHash").equals(gh.hashBanco(list))) return false; return true; }
/** * * Metodo que inicia o repositorio com os dados hash do banco * * @param list */ public void init(List<TeacherTO> list) { mrm.setPropBancoHash("bancoHash", gh.hashBanco(list)); mrm.setDatahash(repo.dataHash(list)); }