protected @Override void startupReader() throws java.io.IOException { if (schemaIn == null) { schemaIn = new FileInputStream(filename); } EntityParser entityParser = new EntityParser(new InputStreamReader(schemaIn)); entityParser.parse(); reader = entityParser.getReader(); }
@Override public Object execute(ExecutionEvent event) throws ExecutionException { /* * Lê os arquivos selecionados no Package Explorer * Fontes: * http://www.vogella.de/articles/EclipsePlugIn/article.html#contribute */ IStructuredSelection selection = (IStructuredSelection) HandlerUtil.getActiveMenuSelection(event); try { /* * Os arquivos selecionados podem ser de mais de um projeto, desta * forma, armazena os projetos num mapa para que possam ser * atualizados (Refresh) após a criação dos arquivos de metadados */ Set<IProject> projects = new HashSet<IProject>(); for (Object element : selection.toList()) { if (element instanceof ICompilationUnit) { ICompilationUnit iCompilationUnit = (ICompilationUnit) element; String metadataFileName = getMetadataFileName(iCompilationUnit); if (metadataFileName != null) { /* * Obtém um CompilationUnit para percorrer as propriedades * com um Visitor * Fontes: * http://www.guj.com.br/java/245139-duvida-com-classloader-ao-desenvolver-um-plugin-para-o-eclipse * http://stackoverflow.com/questions/3938528/getting-field-type-in-a-method-in-eclipse */ CompilationUnit compilationUnit = getAst(iCompilationUnit); EntityParser parser = new EntityParser(iCompilationUnit, compilationUnit); parser.run(); EntityType entityType = parser.getEntityType(); // Grava os dados da entidade em um arquivo xml write(metadataFileName, entityType); // adicina o projeto no conjunto, para ser atualizado após a criação dos arquivos projects.add(iCompilationUnit.getCorrespondingResource().getProject()); } else { MessageDialog.openInformation( HandlerUtil.getActiveShell(event), "Erro", "Não foi possível gravar o arquivo " + METADATA_EXTENSION + ". Verifique se você possui permissão de escrita no projeto."); } } else { MessageDialog.openInformation( HandlerUtil.getActiveShell(event), "Atenção", "Selecione apenas arquivos Java"); return null; } } /* * Atualiza os projetos vinculados aos arquivos * Fontes: * http://www.openarchitectureware.org/forum/viewtopic.php?showtopic=4958 */ for (IProject project : projects) { project.refreshLocal(IResource.DEPTH_INFINITE, null); } MessageDialog.openInformation( HandlerUtil.getActiveShell(event), "Sucesso", "Arquivos de metadados criados com sucesso."); } catch (Exception e) { /* * Logs, Fonte: * http://www.ibm.com/developerworks/library/os-eclog/ */ IStatus status = new Status( IStatus.ERROR, Activator.PLUGIN_ID, "Error executing plugin orion-metadata.", e); Activator.getDefault().getLog().log(status); throw new ExecutionException("Error executing plugin orion-metadata.", e); } return null; }
private void parseInterfac(String interfac2) { EntityParser ep = new EntityParser(interfac2); interfac = interfac2; sirinaIzlaza = ep.getOutputWidth(); sirinaUlaza = ep.getInputWidth(); }