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); } } }
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(); } }
public String getDatabaseName() { String dbname = contentProviderAnnotation.dbname(); if (ContentProvider.DEFAULT_DB_NAME.equals(dbname)) { dbname = contentProviderClass.getSimpleName(); } return dbname; }
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(); }
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); } } } }
/** * 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); }
@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); } }