Examples of XStreamSavingConverter


Examples of org.projectforge.database.xstream.XStreamSavingConverter

   * @return Only for test cases.
   */
  public XStreamSavingConverter restoreDatabase(final Reader reader)
  {
    final List<AbstractPlugin> plugins = PluginsRegistry.instance().getPlugins();
    final XStreamSavingConverter xstreamSavingConverter = new XStreamSavingConverter() {

      @Override
      protected Serializable getOriginalIdentifierValue(final Object obj)
      {
        return HibernateUtils.getIdentifier(obj);
      }

      @Override
      public Serializable onBeforeSave(final Session session, final Object obj)
      {
        log.info("Object " + obj);
        if (obj instanceof PFUserDO) {
          final PFUserDO user = (PFUserDO) obj;
          return save(user, user.getRights());
        } else if (obj instanceof AbstractRechnungDO< ? >) {
          final AbstractRechnungDO< ? extends AbstractRechnungsPositionDO> rechnung = (AbstractRechnungDO< ? >) obj;
          final List< ? extends AbstractRechnungsPositionDO> positions = rechnung.getPositionen();
          final KontoDO konto = rechnung.getKonto();
          if (konto != null) {
            save(konto);
            rechnung.setKonto(null);
          }
          rechnung.setPositionen(null); // Need to nullable positions first (otherwise insert fails).
          final Serializable id = save(rechnung);
          if (konto != null) {
            rechnung.setKonto(konto);
          }
          if (positions != null) {
            for (final AbstractRechnungsPositionDO pos : positions) {
              if (pos.getKostZuweisungen() != null) {
                final List<KostZuweisungDO> zuweisungen = pos.getKostZuweisungen();
                pos.setKostZuweisungen(null); // Need to nullable first (otherwise insert fails).
                save(pos);
                if (pos instanceof RechnungsPositionDO) {
                  ((RechnungDO) rechnung).addPosition((RechnungsPositionDO) pos);
                } else {
                  ((EingangsrechnungDO) rechnung).addPosition((EingangsrechnungsPositionDO) pos);
                }
                if (zuweisungen != null) {
                  for (final KostZuweisungDO zuweisung : zuweisungen) {
                    pos.addKostZuweisung(zuweisung);
                    save(zuweisung);
                  }
                }
              }
            }
          }
          return id;
        } else if (obj instanceof AuftragDO) {
          final AuftragDO auftrag = (AuftragDO) obj;
          return save(auftrag, auftrag.getPositionen());
        }
        if (plugins != null) {
          for (final AbstractPlugin plugin : plugins) {
            try {
              plugin.onBeforeRestore(this, obj);
            } catch (final Exception ex) {
              log.error("Error in Plugin while restoring object: " + ex.getMessage(), ex);
            }
          }
        }
        for (final XmlDumpHook xmlDumpHook : xmlDumpHooks) {
          try {
            xmlDumpHook.onBeforeRestore(this, obj);
          } catch (final Exception ex) {
            log.error("Error in XmlDumpHook while restoring object: " + ex.getMessage(), ex);
          }
        }
        return super.onBeforeSave(session, obj);
      }

      /**
       * @see org.projectforge.database.xstream.XStreamSavingConverter#onAfterSave(java.lang.Object, java.io.Serializable)
       */
      @Override
      public void onAfterSave(final Object obj, final Serializable id)
      {
        if (plugins != null) {
          for (final AbstractPlugin plugin : plugins) {
            plugin.onAfterRestore(this, obj, id);
          }
        }
      }
    };
    // UserRightDO is inserted on cascade while inserting PFUserDO.
    xstreamSavingConverter.appendIgnoredObjects(embeddedClasses);
    xstreamSavingConverter.appendOrderedType(PFUserDO.class, GroupDO.class, TaskDO.class, KundeDO.class, ProjektDO.class, Kost1DO.class,
        Kost2ArtDO.class, Kost2DO.class, AuftragDO.class, //
        RechnungDO.class, EingangsrechnungDO.class, EmployeeSalaryDO.class, KostZuweisungDO.class,//
        UserPrefEntryDO.class, UserPrefDO.class, //
        AccessEntryDO.class, GroupTaskAccessDO.class, ConfigurationDO.class);
    if (plugins != null) {
      for (final AbstractPlugin plugin : plugins) {
        xstreamSavingConverter.appendOrderedType(plugin.getPersistentEntities());
      }
    }
    Session session = null;
    try {
      final SessionFactory sessionFactory = hibernate.getSessionFactory();
      session = sessionFactory.openSession(EmptyInterceptor.INSTANCE);
      session.setFlushMode(FlushMode.AUTO);
      final XStream xstream = XStreamHelper.createXStream();
      xstream.setMode(XStream.ID_REFERENCES);
      xstreamSavingConverter.setSession(session);
      xstream.registerConverter(xstreamSavingConverter, 10);
      xstream.registerConverter(new UserRightIdSingleValueConverter(), 20);
      xstream.registerConverter(new UserPrefAreaSingleValueConverter(), 19);
      // alle Objekte Laden und speichern
      xstream.fromXML(reader);

      xstreamSavingConverter.saveObjects();
    } catch (final Exception ex) {
      log.error(ex.getMessage(), ex);
      throw new RuntimeException(ex);
    } finally {
      IOUtils.closeQuietly(reader);
View Full Code Here

Examples of org.projectforge.database.xstream.XStreamSavingConverter

  {
    log.fatal("User wants to initialize database with test data.");
    if (isEmpty() == false) {
      databaseNotEmpty();
    }
    final XStreamSavingConverter xstreamSavingConverter = xmlDump.restoreDatabaseFromClasspathResource(TEST_DATA_BASE_DUMP_FILE, "utf-8");
    xmlDump.verifyDump(xstreamSavingConverter);
    final PFUserDO user = userDao.getInternalByName(DEFAULT_ADMIN_USER);
    if (user == null) {
      log.error("Initialization of database failed. Perhaps caused by corrupted init-test-data.xml.gz.");
    } else {
View Full Code Here

Examples of org.projectforge.database.xstream.XStreamSavingConverter

      } else {
        log.info("Unsupported file suffix. Only *.xml and *.xml.gz is supported: " + clientFileName);
        error(getString("administration.setup.error.uploadfile"));
        return;
      }
      final XStreamSavingConverter converter = xmlDump.restoreDatabase(reader);
      final int counter = xmlDump.verifyDump(converter);
      configurationDao.checkAndUpdateDatabaseEntries();
      Configuration.getInstance().setExpired();
      taskTree.setExpired();
      userGroupCache.setExpired();
View Full Code Here

Examples of org.projectforge.database.xstream.XStreamSavingConverter

  @Test
  public void verifyDump()
  {
    userGroupCache.setExpired(); // Force reload (because it's may be expired due to previous tests).
    assertTrue(initDatabaseDao.isEmpty());
    final XStreamSavingConverter converter = xmlDump
        .restoreDatabaseFromClasspathResource(InitDatabaseDao.TEST_DATA_BASE_DUMP_FILE, "utf-8");
    final int counter = xmlDump.verifyDump(converter);
    assertTrue("Import was not successful.", counter > 0);
    assertTrue("Minimum expected number of tested object to low: " + counter + " < 50.", counter >= 50);
    final PFUserDO user = userDao.internalLoadAll().get(0);
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.