Project

General

Profile

1
package eu.dnetlib.grid.process;
2

    
3
import java.util.List;
4
import java.util.Map;
5
import java.util.Objects;
6
import java.util.stream.Collectors;
7

    
8
import org.springframework.boot.CommandLineRunner;
9
import org.springframework.boot.SpringApplication;
10
import org.springframework.boot.autoconfigure.SpringBootApplication;
11

    
12
import com.googlecode.protobuf.format.JsonFormat;
13

    
14
import eu.dnetlib.grid.process.model.GridOrganization;
15
import eu.dnetlib.grid.process.utils.Datasource;
16
import eu.dnetlib.grid.process.utils.GridCleaner;
17
import eu.dnetlib.grid.process.utils.GridUtils;
18
import eu.dnetlib.miscutils.functional.hash.Hashing;
19

    
20
@SpringBootApplication
21
public class GridOrganizationsApplication implements CommandLineRunner {
22

    
23
	private static final Datasource gridDs =
24
			new Datasource("10|openaire____::" + Hashing.md5("grid"), "GRID - Global Research Identifier Database", "grid________");
25

    
26
	public static void main(final String[] args) {
27
		SpringApplication.run(GridOrganizationsApplication.class, args);
28
	}
29

    
30
	@Override
31
	public void run(final String... args) throws Exception {
32

    
33
		if (args.length == 1) {
34
			processFile(args[0]);
35
		} else {
36
			System.err.println();
37
			System.err.println("Usage: java -jar <JARFILE> <GridJsonFile>");
38
			System.err.println();
39
		}
40
	}
41

    
42
	protected void processFile(final String jsonFile) throws Exception {
43
		final GridCleaner cleaner = new GridCleaner();
44

    
45
		final Map<String, String> parents = GridUtils.streamOrganizations(jsonFile)
46
				.filter(Objects::nonNull)
47
				.filter(o -> o.getStatus().equals("active"))
48
				.collect(Collectors.toMap(GridOrganization::getId, GridUtils::findShortName));
49

    
50
		final JsonFormat jsonFormat = new JsonFormat();
51

    
52
		GridUtils.streamOrganizations(jsonFile)
53
				.filter(Objects::nonNull)
54
				.filter(o -> o.getStatus().equals("active"))
55
				.map(cleaner)
56
				.map(org -> GridUtils.toProtos(org, parents, gridDs))
57
				.flatMap(List::stream)
58
				.map(jsonFormat::printToString)
59
				.forEach(System.out::println);
60

    
61
	}
62

    
63
}
    (1-1/1)