コード例 #1
0
  public AnnotatedSchema(Class<? extends SormaContentProvider> ormcp) {
    this.contentProviderClass = ormcp;
    this.contentProviderAnnotation = ReflectionUtil.getAnnotation(ormcp, ContentProvider.class);
    version = contentProviderAnnotation.version();

    for (Class<?> cls : contentProviderAnnotation.mappingClasses()) {
      try {
        Table annotation = (Table) ReflectionUtil.getAnnotation(cls, Table.class);
        if (annotation == null) {
          throw new RuntimeException(cls + " class has no @Table annotation");
        }
        Class mappingClass = annotation.mappingClass();
        if (mappingClass == null || Object.class.equals(mappingClass)) {
          mappingClass = cls;
        }
        addTable(new DbTable(mappingClass, annotation));
      } catch (Exception e) {
        throw new SormaException("cannot map " + cls, e);
      }
    }

    for (Table table : contentProviderAnnotation.tables()) {
      try {
        Class cls = table.mappingClass();
        if (cls == null) {
          throw new RuntimeException(
              "@Table annotation inside of @ContentProvider must have mappingClass attribute");
        }
        addTable(new DbTable(cls, table));
      } catch (Exception e) {
        throw new SormaException(e);
      }
    }
  }
コード例 #2
0
ファイル: Entity.java プロジェクト: leasual/greenDAO
  void init2ndPass() {
    init2ndPassNamesWithDefaults();

    for (int i = 0; i < properties.size(); i++) {
      Property property = properties.get(i);
      property.setOrdinal(i);
      property.init2ndPass();
      if (property.isPrimaryKey()) {
        propertiesPk.add(property);
      } else {
        propertiesNonPk.add(property);
      }
    }

    if (propertiesPk.size() == 1) {
      pkProperty = propertiesPk.get(0);
      pkType = schema.mapToJavaTypeNullable(pkProperty.getPropertyType());
    } else {
      pkType = "Void";
    }

    propertiesColumns = new ArrayList<Property>(properties);
    for (ToOne toOne : toOneRelations) {
      toOne.init2ndPass();
      Property[] fkProperties = toOne.getFkProperties();
      for (Property fkProperty : fkProperties) {
        if (!propertiesColumns.contains(fkProperty)) {
          propertiesColumns.add(fkProperty);
        }
      }
    }

    for (ToMany toMany : toManyRelations) {
      toMany.init2ndPass();
      // Source Properties may not be virtual, so we do not need the following code:
      // for (Property sourceProperty : toMany.getSourceProperties()) {
      // if (!propertiesColumns.contains(sourceProperty)) {
      // propertiesColumns.add(sourceProperty);
      // }
      // }
    }

    if (active == null) {
      active = schema.isUseActiveEntitiesByDefault();
    }
    active |= !toOneRelations.isEmpty() || !toManyRelations.isEmpty();

    if (hasKeepSections == null) {
      hasKeepSections = schema.isHasKeepSectionsByDefault();
    }

    init2ndPassIndexNamesWithDefaults();

    for (ContentProvider contentProvider : contentProviders) {
      contentProvider.init2ndPass();
    }
  }
コード例 #3
0
 public String getDatabaseName() {
   String dbname = contentProviderAnnotation.dbname();
   if (ContentProvider.DEFAULT_DB_NAME.equals(dbname)) {
     dbname = contentProviderClass.getSimpleName();
   }
   return dbname;
 }
コード例 #4
0
  private void performDefaultsForFormattingGroup() {
    // Formatting
    fLineWidthText.setText(
        getModelPreferences().getDefaultString(HTMLCorePreferenceNames.LINE_WIDTH));
    fSplitMultiAttrs.setSelection(
        getModelPreferences().getDefaultBoolean(HTMLCorePreferenceNames.SPLIT_MULTI_ATTRS));
    fAlignEndBracket.setSelection(
        getModelPreferences().getDefaultBoolean(HTMLCorePreferenceNames.ALIGN_END_BRACKET));
    fClearAllBlankLines.setSelection(
        getModelPreferences().getDefaultBoolean(HTMLCorePreferenceNames.CLEAR_ALL_BLANK_LINES));

    if (HTMLCorePreferenceNames.TAB.equals(
        getModelPreferences().getDefaultString(HTMLCorePreferenceNames.INDENTATION_CHAR))) {
      fIndentUsingTabs.setSelection(true);
      fIndentUsingSpaces.setSelection(false);
    } else {
      fIndentUsingSpaces.setSelection(true);
      fIndentUsingTabs.setSelection(false);
    }
    fIndentationSize.setSelection(
        getModelPreferences().getDefaultInt(HTMLCorePreferenceNames.INDENTATION_SIZE));

    // Inline elements
    fContentProvider.restoreDefaults();
    fViewer.refresh();
  }
コード例 #5
0
 public void upgradeDatabase(SqlExecutor executor, int oldVersion, int newVersion)
     throws Exception {
   Upgrade[] upgrades = contentProviderAnnotation.upgrades();
   for (Upgrade upgrade : upgrades) {
     if (upgrade.version() <= oldVersion || upgrade.version() > newVersion) {
       continue;
     }
     for (String sql : upgrade.SQLs()) {
       try {
         System.out.println("SORMA" + "\t" + "execute update " + sql);
         executor.execute(sql);
       } catch (Exception e) {
         throw new SormaException(e);
       }
     }
   }
 }
コード例 #6
0
 /**
  * Registers the given provider for downloading. An unique id of the newly registered download is
  * build out of the hashcode of the provider.
  *
  * @param provider This provider is <b>WEAKLY</b> referenced inside. Make sure to keep a strong
  *     reference as long as the download should be active.
  * @return The download URL for the given provider.
  */
 public static String registerContent(ContentProvider provider) {
   return registerContent(String.valueOf(provider.hashCode()), provider);
 }
コード例 #7
0
  @Override
  public void service(HttpServletRequest request, HttpServletResponse response)
      throws IOException, ServletException {

    String pathInfo = request.getPathInfo();

    try {
      // download.html
      if (pathInfo != null && pathInfo.startsWith("/download.html")) {
        // sending an HTML page helps debugging on IE, which often blocks or
        // otherwise fails to download directly
        String id = request.getParameter(ID_REQUEST_PARAM);
        String filename = request.getParameter("filename");
        String linkTarget =
            "../download/"
                + (filename != null ? filename : "polymap3_export.tmp")
                + "?"
                + ID_REQUEST_PARAM
                + "="
                + id;

        response.setContentType("text/html; charset=ISO-8859-1");

        PrintWriter out = response.getWriter();
        out.println("<html><head>");
        out.println("<meta HTTP-EQUIV=\"REFRESH\" content=\"0; url=" + linkTarget + "\">");
        out.println("</head>");
        out.println("<a href=\"" + linkTarget + "\">Download starten</a>");
        out.println("</html>");
        out.flush();
      }

      // download
      else {
        String id = request.getParameter(ID_REQUEST_PARAM);
        log.info("Request: id=" + id);
        if (id == null) {
          log.warn("No 'id' param in request.");
          response.sendError(404);
          return;
        }

        ContentProvider provider = providers.get(id);
        if (provider == null) {
          log.warn("No content provider registered for id: " + id);
          response.sendError(404);
          return;
        }

        // String[] pathInfos = StringUtils.split( request.getPathInfo(), "/" );

        String contentType = provider.getContentType();
        response.setContentType(contentType);
        // display any HTML content in browser instead of downloading it
        if (contentType != null && !contentType.toLowerCase().contains("html")) {
          response.setHeader(
              "Content-disposition", "attachment; filename=" + provider.getFilename());
        }
        response.setHeader("Pragma", "public");
        response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
        response.setHeader("Cache-Control", "public");
        response.setHeader("Expires", "0");

        InputStream in = provider.getInputStream();
        ServletOutputStream out = response.getOutputStream();
        boolean providerDone = false;
        try {
          IOUtils.copy(in, out);
          out.flush();
          response.flushBuffer();

          providerDone = provider.done(true);
        } catch (Exception e) {
          providerDone = provider.done(false);
        } finally {
          IOUtils.closeQuietly(in);
        }

        if (providerDone) {
          providers.remove(id);
        }
      }
    } catch (Exception e) {
      log.debug("", e);
      throw new ServletException(e);
    }
  }