Package org.dru.clay.respository.ivy

Source Code of org.dru.clay.respository.ivy.ConfigurationMappingParser

package org.dru.clay.respository.ivy;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.dru.clay.respository.dependency.ConfigurationMapping;
import org.dru.clay.respository.dependency.MappingRule;
import org.dru.clay.respository.dependency.MappingRules;

public class ConfigurationMappingParser {
  public static final Pattern arrow = Pattern.compile("(.*)->(.*)", Pattern.DOTALL);

  public ConfigurationMapping parse(String conf) {
    final List<MappingRule> rules = new ArrayList<MappingRule>();

    final String[] parts = conf.split(";");
    for (int i = 0; i < parts.length; i++) {
      final String part = parts[i].trim();

      if (parseArrow(rules, part)) {
        continue;
      }

      rules.add(MappingRules.simple(part));
    }

    return new ConfigurationMapping(rules);
  }

  private boolean parseArrow(List<MappingRule> rules, String part) {
    final Matcher matcher = arrow.matcher(part);
    if (!matcher.matches()) {
      return false;
    }
    String left = matcher.group(1).trim();
    String right = matcher.group(2).trim();

    if ("@".equals(right)) {
      right = left;
    }

    if (isAll(left)) {
      rules.add(MappingRules.anyToMany(csv(right)));
      return true;
    }

    rules.add(MappingRules.mayToMany(csv(left), csv(right)));
    return true;
  }

  private Collection<String> csv(String value) {
    final Set<String> result = new HashSet<String>();
    if (value != null) {
      final String[] part = value.split(",");
      for (int i = 0; i < part.length; i++) {
        result.add(part[i].trim());
      }
    }
    return result;
  }

  private boolean isAll(String s) {
    return "%".equals(s) || "*".equals(s);
  }
TOP

Related Classes of org.dru.clay.respository.ivy.ConfigurationMappingParser

TOP
Copyright © 2018 www.massapi.com. 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.