/** * @param nodeUri * @throws Exception * @author Elena Posea * @author Mariana Gheorghe */ public void generateMatches(String nodeUri, boolean all) throws Exception { IFileAccessController fileController = FileControllerUtils.getFileAccessController(); // get repo and technology from node VirtualNodeResourceHandler virtualNodeHandler = CorePlugin.getInstance().getVirtualNodeResourceHandler(); String repo = Utils.getRepo(nodeUri); String[] typeSpecificPart = virtualNodeHandler.getTypeSpecificPartFromNodeUri(nodeUri).split("\\$"); String technology = typeSpecificPart[0]; String regexUri = FileControllerUtils.createFileNodeUri( repo, REGEX_CONFIGS_FOLDER + "/" + technology + "/" + REGEX_CONFIG_FILE); regexUri = regexUri.replaceFirst(CoreConstants.FILE_SCHEME, "fpp"); // get regex configuration file new ResourceServiceRemote().subscribeToParentResource(regexUri); Node regex = CorePlugin.getInstance().getResourceService().getResourceNode(regexUri); // create regEx configuration RegexConfiguration regexConfig = new RegexConfiguration(); new ConfigProcessor().processConfigHierarchy(regex, regexConfig); regexConfig.compile(Pattern.DOTALL); String technologyPath = REGEX_CONFIGS_FOLDER + "/" + technology; Node technologyNode = CorePlugin.getInstance() .getResourceService() .getNode(FileControllerUtils.createFileNodeUri(repo, technologyPath)); if (all) { // parse files contained in the test files directory Object file = fileController.getFile(FileControllerUtils.getFilePathWithRepo(regex)); Object parentFile = fileController.getParentFile(file); Object testFilesFolder = fileController.getFile(parentFile, REGEX_TEST_FILES_FOLDER); List<Object> testFiles = getTestFiles(testFilesFolder); for (Object testFile : testFiles) { String relativePath = fileController.getPathRelativeToFile(testFile, testFilesFolder); parseFile(technologyNode, testFile, relativePath, regex, regexConfig); } } else { // parse only selected file String relativePath = typeSpecificPart[1]; Object testFile = fileController.getFile( repo + "/" + technologyPath + "/" + REGEX_TEST_FILES_FOLDER + "/" + relativePath); parseFile(technologyNode, testFile, relativePath, regex, regexConfig); } }