|
@@ -6,15 +6,16 @@ import io.vavr.Lazy;
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
import org.hswebframework.web.workflow.dimension.parser.CandidateDimensionParserStrategy;
|
|
import org.hswebframework.web.workflow.dimension.parser.CandidateDimensionParserStrategy;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import org.springframework.stereotype.Component;
|
|
import org.springframework.util.StringUtils;
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
import java.util.Collection;
|
|
import java.util.Collection;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
+@Component
|
|
public class DefaultCandidateDimensionParser implements CandidateDimensionParser {
|
|
public class DefaultCandidateDimensionParser implements CandidateDimensionParser {
|
|
|
|
|
|
-
|
|
|
|
@Autowired(required = false)
|
|
@Autowired(required = false)
|
|
private List<CandidateDimensionParserStrategy> strategies;
|
|
private List<CandidateDimensionParserStrategy> strategies;
|
|
|
|
|
|
@@ -22,20 +23,29 @@ public class DefaultCandidateDimensionParser implements CandidateDimensionParser
|
|
public CandidateDimension parse(String jsonConfig) {
|
|
public CandidateDimension parse(String jsonConfig) {
|
|
JSONObject jsonObject = JSON.parseObject(jsonConfig);
|
|
JSONObject jsonObject = JSON.parseObject(jsonConfig);
|
|
String type = jsonObject.getString("type");
|
|
String type = jsonObject.getString("type");
|
|
- List<String> ids = jsonObject.getJSONArray("list").toJavaList(String.class);
|
|
|
|
|
|
+ CandidateDimensionParserStrategy.StrategyConfig config = jsonObject
|
|
|
|
+ .toJavaObject(CandidateDimensionParserStrategy.StrategyConfig.class);
|
|
|
|
+ if (config.getConfig() == null) {
|
|
|
|
+ config.setConfig(jsonObject);
|
|
|
|
+ }
|
|
|
|
|
|
- if (StringUtils.isEmpty(type) || CollectionUtils.isEmpty(strategies) || CollectionUtils.isEmpty(ids)) {
|
|
|
|
|
|
+ if (StringUtils.isEmpty(type)
|
|
|
|
+ || CollectionUtils.isEmpty(strategies)
|
|
|
|
+ || CollectionUtils.isEmpty(config.getIdList())) {
|
|
return CandidateDimension.empty;
|
|
return CandidateDimension.empty;
|
|
}
|
|
}
|
|
|
|
|
|
- return Lazy.val(() ->
|
|
|
|
- (CandidateDimension) () -> strategies
|
|
|
|
- .stream()
|
|
|
|
- .filter(strategy -> strategy.support(type))
|
|
|
|
- .map(strategy -> strategy.parse(ids))
|
|
|
|
- .filter(CollectionUtils::isNotEmpty)
|
|
|
|
- .flatMap(Collection::stream)
|
|
|
|
- .collect(Collectors.toList()), CandidateDimension.class);
|
|
|
|
|
|
+ return Lazy.val(() -> {
|
|
|
|
+ List<String> list = strategies
|
|
|
|
+ .stream()
|
|
|
|
+ .filter(strategy -> strategy.support(type))
|
|
|
|
+ .map(strategy -> strategy.parse(config))
|
|
|
|
+ .filter(CollectionUtils::isNotEmpty)
|
|
|
|
+ .flatMap(Collection::stream)
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
+ return (CandidateDimension) () -> list;
|
|
|
|
+ }
|
|
|
|
+ , CandidateDimension.class);
|
|
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|