Package com.asakusafw.compiler.flow

Examples of com.asakusafw.compiler.flow.ExternalIoDescriptionProcessor$Output


                error("{0}は入力を表現していません", desc);
                continue;
            }
            InputDescription description = (InputDescription) desc;
            saw.add(description);
            ExternalIoDescriptionProcessor proc = environment.getExternals().findProcessor(description);
            if (proc == null) {
                error("{0}は不明なインポーターを利用しています", desc);
                continue;
            }
            Import prologue = new Import(source, description, proc);
            LOG.debug("入力{}が追加されます", prologue);
            results.add(prologue);
        }
        Set<InputDescription> sideData = Sets.create();
        for (StageModel stage : stageModels) {
            sideData.addAll(stage.getSideDataInputs());
        }
        sideData.removeAll(saw);
        for (InputDescription input : sideData) {
            ExternalIoDescriptionProcessor proc = environment.getExternals().findProcessor(input);
            if (proc == null) {
                error("{0}は不明なインポーターを利用しています", input);
                continue;
            }
            Import prologue = new Import(input, proc);
View Full Code Here


            if (desc.getKind() != FlowElementKind.OUTPUT) {
                error("{0}は出力を表現していません", desc);
                continue;
            }
            OutputDescription description = (OutputDescription) desc;
            ExternalIoDescriptionProcessor proc = environment.getExternals().findProcessor(description);
            if (proc == null) {
                error("{0}は不明なエクスポーターを利用しています", desc);
                continue;
            }
            Export epilogue = new Export(
View Full Code Here

    private Set<SideData> analyzeSideData(StageModel model) {
        assert model != null;
        Set<SideData> results = Sets.create();
        for (InputDescription input : model.getSideDataInputs()) {
            ExternalIoDescriptionProcessor proc = environment.getExternals().findProcessor(input);
            if (proc == null) {
                error("{0}は不明なインポーターを利用しています", input);
                continue;
            }
            Set<Location> locations = proc.getInputInfo(input).getLocations();
            results.add(new SideData(locations, input.getName()));
        }
        return results;
    }
View Full Code Here

        List<ExternalIoCommandProvider> commands = Lists.create();
        List<ExternalIoStage> prologues = Lists.create();
        List<ExternalIoStage> epilogues = Lists.create();
        for (Map.Entry<ExternalIoDescriptionProcessor, List<Import>> entry : imports.entrySet()) {
            ExternalIoDescriptionProcessor proc = entry.getKey();
            List<Import> importGroup = entry.getValue();
            List<Export> exportGroup = exports.get(proc);
            assert exportGroup != null;
            assert importGroup.isEmpty() == false || exportGroup.isEmpty() == false;

            IoContext context = createEmitContext(proc, importGroup, exportGroup);

            LOG.debug("{}によって外部入出力の記述を生成しています", proc.getClass().getName());
            proc.emitPackage(context);

            LOG.debug("{}によってインポーターの記述を生成しています", proc.getClass().getName());
            prologues.addAll(proc.emitPrologue(context));

            LOG.debug("{}によってエクスポーターの記述を生成しています", proc.getClass().getName());
            epilogues.addAll(proc.emitEpilogue(context));

            commands.add(proc.createCommandProvider(context));
        }

        return new CompiledJobflow(commands, prologues, epilogues);
    }
View Full Code Here

    private <T extends Processible> Map<ExternalIoDescriptionProcessor, List<T>> group(List<T> targets) {
        assert targets != null;
        Map<ExternalIoDescriptionProcessor, List<T>> results = Maps.create();
        for (T processible : targets) {
            ExternalIoDescriptionProcessor proc = processible.getProcessor();
            Maps.addToList(results, proc, processible);
        }
        return results;
    }
View Full Code Here

        assert list != null;
        assert actives != null;
        for (ListIterator<Tuple2<T, ExternalIoDescriptionProcessor>> iter = list.listIterator();
                iter.hasNext();) {
            Tuple2<T, ExternalIoDescriptionProcessor> tuple = iter.next();
            ExternalIoDescriptionProcessor normal = actives.get(tuple.second.getClass());
            iter.set(Tuples.of(tuple.first, normal));
        }
    }
View Full Code Here

        assert outputs != null;
        boolean valid = true;
        Repository externals = environment.getExternals();
        for (FlowIn<?> port : graph.getFlowInputs()) {
            InputDescription desc = port.getDescription();
            ExternalIoDescriptionProcessor processor = externals.findProcessor(desc);
            if (processor != null) {
                inputs.add(Tuples.of(desc, processor));
            } else {
                environment.error(
                        "{0}を処理するプロセッサが見つかりませんでした。",
                        desc.getClass().getName());
                valid = false;
            }
        }
        for (FlowOut<?> port : graph.getFlowOutputs()) {
            OutputDescription desc = port.getDescription();
            ExternalIoDescriptionProcessor processor = externals.findProcessor(desc);
            if (processor != null) {
                outputs.add(Tuples.of(desc, processor));
            } else {
                valid = false;
            }
View Full Code Here

    }

    private boolean isSupportedFormat(InputDescription desc) {
        assert desc != null;
        assert desc.getImporterDescription() != null;
        ExternalIoDescriptionProcessor proc = getEnvironment().getExternals().findProcessor(desc);
        if (proc == null) {
            return false;
        }
        Class<?> formatType = proc.getInputInfo(desc).getFormat();
        return formatType == TemporaryInputFormat.class;
    }
View Full Code Here

    private ExternalIoDescriptionProcessor findProcessor(Class<?> keyClass) {
        assert keyClass != null;
        Class<?> current = keyClass;
        while (current != null) {
            ExternalIoDescriptionProcessor processor = map.get(current);
            if (processor != null) {
                return processor;
            }
            current = current.getSuperclass();
        }
View Full Code Here

    for (Iterator i = list.iterator(); i.hasNext();) {
      source.setBookmark(bookmark);

      ElementOutputList.ElementOutput elementOutput = (ElementOutputList.ElementOutput)i.next();
      Element element = elementOutput.getElement();
      Output output = elementOutput.getOutput();
     
      boolean elementNot = elementOutput.isNot();

      if (this.caseSensitive != null) {
        caseSensitive = this.caseSensitive.booleanValue();
      }
      if (elementOutput.isCaseSensitive() != null) {
        caseSensitive = elementOutput.isCaseSensitive().booleanValue();
      }

      boolean match = false;
      if (output.receive()) {
        if (receive) {
          match = recorder.playMatch(element, source.getBookmark());
          source.setBookmark(recorder.playBookmark());
        } else {
          output.init(source);
          int mindex = recorder.reserveMatchIndex(level, element, source.getBookmark(), parentNot, elementNot);
          int bindex = recorder.reserveBookmarkIndex();
          match = element.parse(level, source, not|parentNot|elementNot, caseSensitive, false);
          match = match != elementNot;
          recorder.set(level, source, element, bookmark, source.getBookmark(), source.getBestIndex(), mindex, bindex, match, parentNot, elementNot);
          output.set(source, bookmark);
        }
      } else {
        if (receive) {
          match = recorder.playMatch(element, source.getBookmark());
        } else {
          int index = recorder.reserveMatchIndex(level, element, source.getBookmark(), parentNot, elementNot);
          match = element.parse(level, source, not|parentNot|elementNot, caseSensitive, false);
          match = (match != elementNot);
          recorder.set(level, source, element, bookmark, source.getBookmark(), source.getBestIndex(), index, match, parentNot, elementNot);
        }
      }

      if (match) {
        if (receive && !elementNot && !not) {
          source.setBookmark(bookmark);
          output.init(source);
          element.parse(level, source, not|parentNot|elementNot, caseSensitive, receive);
          output.set(source, bookmark);
        }
                output = list.getOutput();
                if (output != null && receive) {
                    output.init(source);
                    output.set(source, bookmark);
                }
               
                return !not;
      }
    }
    if (not) {
      source.setBookmark(bookmark);
      source.skipCharacter();

      Output output = list.getOutput();
      if (output != null && receive) {
        output.init(source);
        output.set(source, bookmark);
      }
    } else {
      recorder.setIndex(recIndex);
    }
View Full Code Here

TOP

Related Classes of com.asakusafw.compiler.flow.ExternalIoDescriptionProcessor$Output

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.