Project

General

Profile

1
package eu.dnetlib.xml;
2

    
3
import java.util.Arrays;
4
import java.util.stream.Collectors;
5

    
6
import org.apache.commons.lang3.StringUtils;
7
import org.apache.commons.logging.Log;
8
import org.apache.commons.logging.LogFactory;
9

    
10
import eu.dnetlib.data.mdstore.plugins.objects.Project;
11

    
12
/**
13
 * Created by sandro on 12/6/16.
14
 */
15
public class ISTIUtilityFunction {
16

    
17
	private static final Log log = LogFactory.getLog(ISTIUtilityFunction.class);
18

    
19
	public static String cleanNames(final String s) {
20
		if (StringUtils.isBlank(s)) { return ""; }
21
		return cleanNames(s, StringUtils.countMatches(s, ",") > 1 ? "," : ";");
22
	}
23

    
24
	private static String cleanNames(final String s, final String sep) {
25
		return Arrays.stream(s.split(sep))
26
				.map(String::trim)
27
				.map(ISTIUtilityFunction::clean)
28
				.map(ISTIUtilityFunction::capitalize)
29
				.filter(StringUtils::isNotBlank)
30
				.collect(Collectors.joining("#"));
31
	}
32

    
33
	private static String clean(final String s) {
34
		return s.replaceAll("\\(.*\\)", "")
35
				.replaceAll("\\[.*\\]", "")
36
				.replaceAll("(?i)^et\\.? al(\\.|\\s)*$", "")
37
				.replaceAll("(?i)\\s*et\\.? al(\\.|\\s)*$", "")
38
				.replaceAll("\\d|\\*", "")
39
				.replaceAll("^(\\s|\\-|\\.)+", "")
40
				.replaceAll("\\,", "")
41
				.replaceAll("\\.", ". ")
42
				.trim();
43
	}
44

    
45
	public static String cleanDoi(final String doi) {
46
		final String x = doi.replaceAll("\\?", "")
47
				.replaceAll("\\s*\\/\\s*", "/")
48
				.replaceAll("\\s*\\-\\s*", "-")
49
				.trim()
50
				.replaceAll("\\s", "_");
51

    
52
		if (!x.equals(doi)) {
53
			log.info("Cleaning doi: " + doi + " -> " + x);
54
		}
55

    
56
		return x;
57
	}
58

    
59
	public static String capitalize(final String s) {
60
		return Arrays.stream(s.split(" "))
61
				.map(String::toLowerCase)
62
				.map(StringUtils::capitalize)
63
				.collect(Collectors.joining(" "));
64
	}
65

    
66
	public static boolean isValidProject(final String id) {
67
		return Project.isValid(id);
68
	}
69

    
70
	// <xsl:for-each select="tokenize(istiFunction:cleanName(.), ';')">
71
	// <xsl:choose>
72
	// <xsl:when test="matches(normalize-space(.), ',(\s*[a-zA-Z]\.)+$')">
73
	// <creator>
74
	// <creatorName>
75
	// <xsl:value-of select="normalize-space(translate(.,',',' '))"/>
76
	// </creatorName>
77
	// </creator>
78
	// </xsl:when>
79
	//
80
	// <xsl:when test="matches(normalize-space(.), '(^[a-zA-Z\.]+,\s?[a-zA-Z\.\s]+$)|(^[a-zA-Z\.\s]+,\s?[a-zA-Z\.]+$)')">
81
	// <creator>
82
	// <creatorName>
83
	// <xsl:value-of select="normalize-space(translate(.,',',' '))"/>
84
	// </creatorName>
85
	// </creator>
86
	// </xsl:when>
87
	//
88
	// <xsl:otherwise>
89
	// <xsl:for-each select="tokenize(., ',')">
90
	// <creator>
91
	// <creatorName>
92
	// <xsl:value-of select="normalize-space(.)"/>
93
	// </creatorName>
94
	// </creator>
95
	// </xsl:for-each>
96
	// </xsl:otherwise>
97
	// </xsl:choose>
98
	// </xsl:for-each>
99
	//
100

    
101
}
    (1-1/1)