Project

General

Profile

« Previous | Next » 

Revision 842835ee

Added by Katja Luther almost 8 years ago

improve fauna europaea author import

View differences:

cdm-pesi/src/main/java/eu/etaxonomy/cdm/io/pesi/faunaEuropaea/FaunaEuropaeaAuthorImport.java
1 1
/**
2 2
* Copyright (C) 2007 EDIT
3
* European Distributed Institute of Taxonomy 
3
* European Distributed Institute of Taxonomy
4 4
* http://www.e-taxonomy.eu
5
* 
5
*
6 6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7 7
* See LICENSE.TXT at the top of this package for the full license terms.
8 8
*/
......
21 21
import eu.etaxonomy.cdm.io.common.ImportHelper;
22 22
import eu.etaxonomy.cdm.io.common.MapWrapper;
23 23
import eu.etaxonomy.cdm.io.common.Source;
24
import eu.etaxonomy.cdm.model.agent.Person;
24 25
import eu.etaxonomy.cdm.model.agent.Team;
25 26
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
26 27
import eu.etaxonomy.cdm.model.common.CdmBase;
......
36 37
	private static final Logger logger = Logger.getLogger(FaunaEuropaeaAuthorImport.class);
37 38

  
38 39
	private static int modCount = 1000;
40
	private final static String authorSeparator = ", ";
41
	private final static String lastAuthorSeparator = " & ";
42

  
39 43

  
40
	
41 44
	/* (non-Javadoc)
42 45
	 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)
43 46
	 */
......
45 48
	protected boolean doCheck(FaunaEuropaeaImportState state){
46 49
		boolean result = true;
47 50
		logger.warn("No checking for Authors not implemented");
48
		
51

  
49 52
		return result;
50 53
	}
51
	
54

  
52 55
	/* (non-Javadoc)
53 56
	 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doInvoke(eu.etaxonomy.cdm.io.common.IImportConfigurator, eu.etaxonomy.cdm.api.application.CdmApplicationController, java.util.Map)
54 57
	 */
55 58
	@Override
56
	protected void doInvoke(FaunaEuropaeaImportState state){ 
59
	protected void doInvoke(FaunaEuropaeaImportState state){
57 60
		/*
58 61
		logger.warn("Start author doInvoke");
59 62
		ProfilerController.memorySnapshot();
......
62 65
			return;
63 66
		}
64 67
		Map<String, MapWrapper<? extends CdmBase>> stores = state.getStores();
65
		MapWrapper<TeamOrPersonBase> authorStore = (MapWrapper<TeamOrPersonBase>)stores.get(ICdmIO.TEAM_STORE);
68
		MapWrapper<TeamOrPersonBase<?>> authorStore = (MapWrapper<TeamOrPersonBase<?>>)stores.get(ICdmIO.TEAM_STORE);
66 69
		TransactionStatus txStatus = null;
67
		
70

  
68 71
		FaunaEuropaeaImportConfigurator fauEuConfig = state.getConfig();
69 72
		Source source = fauEuConfig.getSource();
70
		
73

  
71 74
		String namespace = "AuthorTeam";
72
		
75

  
73 76
		if(logger.isInfoEnabled()) { logger.info("Start making Authors..."); }
74
		
77

  
75 78
		try {
76 79

  
77
			String strQuery = 
80
			String strQuery =
78 81
				" SELECT *  " +
79 82
				" FROM author " ;
80 83
			ResultSet rs = source.getResultSet(strQuery) ;
......
82 85
			int i = 0;
83 86
			while (rs.next()) {
84 87

  
85
				if ((i++ % modCount) == 0 && i!= 1 ) { 
88
				if ((i++ % modCount) == 0 && i!= 1 ) {
86 89
					if(logger.isDebugEnabled()) {
87
						logger.debug("Authors retrieved: " + (i-1)); 
90
						logger.debug("Authors retrieved: " + (i-1));
88 91
					}
89 92
				}
90 93

  
......
93 96

  
94 97
				String auctWithNecRegEx = "\\bauct\\b\\.?.*\\bnec\\b\\.?.*";
95 98
				String necAuctRegEx = "\\bnec\\b\\.?.*\\bauct\\b\\.?.*";
96
				
99

  
97 100
				boolean auctWithNecFound = expressionMatches(auctWithNecRegEx, authorName);
98 101
				boolean necAuctFound = expressionMatches(necAuctRegEx, authorName);
99 102
				if (auctWithNecFound){
......
101 104
					authorName = authorName.substring(expressionEnd("nec\\.?", authorName)+1, authorName.length());
102 105
					logger.debug("authorName after auct nec string is removed" + authorName);
103 106
				}
104
				
107

  
105 108
				if (necAuctFound){
106 109
					logger.debug("authorName before nec auct string is removed" + authorName);
107 110
					authorName = authorName.substring(0, authorName.indexOf("nec")-1);
108 111
					logger.debug("authorName before nec auct string is removed" + authorName);
109 112
				}
110
				TeamOrPersonBase<Team> author = null;
113
				TeamOrPersonBase<?> author = null;
111 114

  
112 115
				try {
113
					author = Team.NewInstance();
114
					author.setTitleCache(authorName, true);
115

  
116
					ImportHelper.setOriginalSource(author, fauEuConfig.getSourceReference(), authorId, namespace);
116
				    author = parseAuthorString(authorName);
117
				    ImportHelper.setOriginalSource(author, fauEuConfig.getSourceReference(), authorId, namespace);
117 118

  
118 119
					if (!authorStore.containsId(authorId)) {
119 120
						authorStore.put(authorId, author);
......
125 126
					logger.warn("An exception occurred when creating author with id " + authorId + ". Author could not be saved.");
126 127
				}
127 128
			}
128
			
129

  
129 130
			if(logger.isInfoEnabled()) { logger.info("Saving authors ..."); }
130 131

  
131 132
			txStatus = startTransaction();
......
134 135
			getAgentService().save((Collection)authorStore.objects());
135 136

  
136 137
			commitTransaction(txStatus);
137
			
138

  
138 139
			if(logger.isInfoEnabled()) { logger.info("End making authors ..."); }
139 140

  
140 141
			return;
......
144 145
			state.setUnsuccessfull();
145 146
		}
146 147
	}
147
	
148

  
148 149
	/* (non-Javadoc)
149 150
	 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)
150 151
	 */
151
	protected boolean isIgnore(FaunaEuropaeaImportState state){
152
	@Override
153
    protected boolean isIgnore(FaunaEuropaeaImportState state){
152 154
		return ! state.getConfig().isDoAuthors();
153 155
	}
154 156

  
157
	public static TeamOrPersonBase<?> parseAuthorString(String authorName){
158
	    TeamOrPersonBase<?> author = null;
159
	    String[] teamMembers = authorName.split(authorSeparator);
160
        String lastMember;
161
        String[] lastMembers;
162
        Person teamMember;
163
        if (teamMembers.length>1){
164
            lastMember = teamMembers[teamMembers.length -1];
165
            lastMembers = lastMember.split(lastAuthorSeparator);
166
            teamMembers[teamMembers.length -1] = "";
167
            author = Team.NewInstance();
168
            for(String member:teamMembers){
169
                if (!member.equals("")){
170
                    teamMember = Person.NewInstance();
171
                    teamMember.setTitleCache(member, true);
172
                   ((Team)author).addTeamMember(teamMember);
173
                }
174
            }
175
            if (lastMembers != null){
176
                for(String member:lastMembers){
177
                   teamMember = Person.NewInstance();
178
                   teamMember.setTitleCache(member, true);
179
                   ((Team)author).addTeamMember(teamMember);
180
                }
181
            }
182

  
183
        } else {
184
            teamMembers = authorName.split(lastAuthorSeparator);
185
            if (teamMembers.length>1){
186
                author = Team.NewInstance();
187
                for(String member:teamMembers){
188
                  teamMember = Person.NewInstance();
189
                  teamMember.setTitleCache(member, true);
190
                  ((Team)author).addTeamMember(teamMember);
191

  
192
                }
193
            }else{
194
                author = Person.NewInstance();
195
                author.setTitleCache(authorName, true);
196
            }
197
        }
198
        author.getTitleCache();
199
        return author;
200
	}
201

  
155 202
}

Also available in: Unified diff