@Override public void handle(ProcessorManager processorManager, RoundEnvironment roundEnvironment) { for (BaseContainerHandler containerHandler : handlers) { containerHandler.handle(processorManager, roundEnvironment); } ContentProviderValidator validator = new ContentProviderValidator(); Collection<ContentProviderDefinition> contentProviderDefinitions = providerMap.values(); for (ContentProviderDefinition contentProviderDefinition : contentProviderDefinitions) { if (validator.validate(processorManager, contentProviderDefinition)) { WriterUtils.writeBaseDefinition(contentProviderDefinition, processorManager); } } List<DatabaseWriter> databaseWriters = getManagerWriters(); for (DatabaseWriter databaseWriter : databaseWriters) { try { JavaWriter javaWriter = new JavaWriter( processorManager .getProcessingEnvironment() .getFiler() .createSourceFile(databaseWriter.getSourceFileName()) .openWriter()); databaseWriter.write(javaWriter); javaWriter.close(); } catch (IOException e) { processorManager.getMessager().printMessage(Diagnostic.Kind.WARNING, e.getMessage()); } } if (roundEnvironment.processingOver()) { try { JavaWriter staticFlowManager = new JavaWriter( processorManager .getProcessingEnvironment() .getFiler() .createSourceFile( Classes.FLOW_MANAGER_PACKAGE + "." + Classes.DATABASE_HOLDER_STATIC_CLASS_NAME) .openWriter()); new FlowManagerHolderWriter(processorManager).write(staticFlowManager); staticFlowManager.close(); } catch (IOException e) { processorManager.getMessager().printMessage(Diagnostic.Kind.WARNING, e.getMessage()); } } }
public TableEndpointDefinition(Element typeElement, ProcessorManager processorManager) { super(typeElement, processorManager); TableEndpoint endpoint = typeElement.getAnnotation(TableEndpoint.class); tableName = endpoint.name(); contentProviderName = endpoint.contentProviderName(); isTopLevel = typeElement.getEnclosingElement() instanceof PackageElement; List<? extends Element> elements = processorManager.getElements().getAllMembers((TypeElement) typeElement); for (Element innerElement : elements) { if (innerElement.getAnnotation(ContentUri.class) != null) { ContentUriDefinition contentUriDefinition = new ContentUriDefinition(innerElement, processorManager); if (!pathValidationMap.containsKey(contentUriDefinition.path)) { contentUriDefinitions.add(contentUriDefinition); } else { processorManager.logError( "There must be unique paths for the specified @ContentUri" + " %1s from %1s", contentUriDefinition.name, contentProviderName); } } else if (innerElement.getAnnotation(Notify.class) != null) { NotifyDefinition notifyDefinition = new NotifyDefinition(innerElement, processorManager); for (String path : notifyDefinition.paths) { Map<Notify.Method, List<NotifyDefinition>> methodListMap = notifyDefinitionPathMap.get(path); if (methodListMap == null) { methodListMap = Maps.newHashMap(); notifyDefinitionPathMap.put(path, methodListMap); } List<NotifyDefinition> notifyDefinitionList = methodListMap.get(notifyDefinition.method); if (notifyDefinitionList == null) { notifyDefinitionList = Lists.newArrayList(); methodListMap.put(notifyDefinition.method, notifyDefinitionList); } notifyDefinitionList.add(notifyDefinition); } } } }
public SqlQueryBuilder appendPathSegments( ProcessorManager processorManager, String databaseName, String tableName, ContentUri.PathSegment[] pathSegments) { TableDefinition tableDefinition = processorManager.getTableDefinition(databaseName, tableName); if (tableDefinition == null) { processorManager.logError( "Could not find table definition for %1s from %1s", tableName, databaseName); } else { for (ContentUri.PathSegment pathSegment : pathSegments) { ColumnDefinition columnDefinition = tableDefinition.mColumnMap.get(pathSegment.column()); if (columnDefinition == null) { processorManager.logError( "Column %1s not found for table %1s", pathSegment.column(), tableDefinition.tableName); } else { append( String.format( "\n.and(Condition.column%s(\"%1s\").is(", (columnDefinition.hasTypeConverter && !columnDefinition.isBoolean) ? "Raw" : "", pathSegment.column())); // primitive use value of if (columnDefinition.element.asType().getKind().isPrimitive()) { String name = columnDefinition.element.asType().toString(); // handle char if ("char".equals(name)) { name = "character"; } name = name.substring(0, 1).toUpperCase() + name.substring(1); append( String.format( "%1s.valueOf(uri.getPathSegments().get(%1d))", name, pathSegment.segment())); } else { append(String.format("uri.getPathSegments().get(%1d)", pathSegment.segment())); } append("))"); } } } return this; }