Project

General

Profile

Download (3.59 KB) Statistics
| Branch: | Revision:
1
/**
2
* Copyright (C) 2007 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9

    
10
package eu.etaxonomy.cdm.app.greece;
11

    
12
import java.io.IOException;
13
import java.net.URI;
14
import java.util.List;
15

    
16
import org.apache.http.HttpException;
17
import org.apache.log4j.Logger;
18
import org.springframework.transaction.TransactionStatus;
19

    
20
import eu.etaxonomy.cdm.api.application.CdmApplicationController;
21
import eu.etaxonomy.cdm.app.common.CdmDestinations;
22
import eu.etaxonomy.cdm.common.media.ImageInfo;
23
import eu.etaxonomy.cdm.database.DbSchemaValidation;
24
import eu.etaxonomy.cdm.database.ICdmDataSource;
25
import eu.etaxonomy.cdm.io.api.application.CdmIoApplicationController;
26
import eu.etaxonomy.cdm.model.common.CdmBase;
27
import eu.etaxonomy.cdm.model.media.ImageFile;
28
import eu.etaxonomy.cdm.model.media.Media;
29
import eu.etaxonomy.cdm.model.media.MediaRepresentation;
30
import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;
31

    
32
/**
33
 * @author a.mueller
34
 * @since 05.2017
35
 */
36
public class GreeceImagesUpdaterActivator {
37
	private static final Logger logger = Logger.getLogger(GreeceImagesUpdaterActivator.class);
38

    
39
//  static final ICdmDataSource cdmDestination = CdmDestinations.localH2();
40
//static final ICdmDataSource cdmDestination = CdmDestinations.cdm_test_local_mysql_test();
41
    static final ICdmDataSource cdmDestination = CdmDestinations.cdm_greece_checklist_production();
42

    
43
	static boolean testOnly = false;
44
	int partition = 3;
45
	int partitionsize = 500;
46

    
47
	private void updateMetadata(ICdmDataSource cdmDestination){
48
        CdmApplicationController app = CdmIoApplicationController.NewInstance(cdmDestination, DbSchemaValidation.VALIDATE);
49
        TransactionStatus tx = app.startTransaction();
50
        int offset = partition*partitionsize;
51
        List<Media> list = app.getMediaService().list(Media.class, partitionsize, offset, null, null);
52
        for (Media media : list){
53
            for (MediaRepresentation rep : media.getRepresentations()){
54
                for (MediaRepresentationPart part : rep.getParts()){
55
                    if (part.isInstanceOf(MediaRepresentationPart.class)){
56
                        ImageFile image = CdmBase.deproxy(part, ImageFile.class);
57
                        URI uri = part.getUri();
58
                        if (uri != null){
59
                            if (image.getSize()!= null){
60
                                continue;
61
                            }
62
                            ImageInfo imageInfo;
63
                            try {
64
                                imageInfo = ImageInfo.NewInstance(uri, 0);
65
                                image.setWidth(imageInfo.getWidth());
66
                                image.setHeight(imageInfo.getHeight());
67
                                image.setSize((int)imageInfo.getLength());
68
                            } catch (IOException | HttpException e) {
69
                                // TODO Auto-generated catch block
70
                                e.printStackTrace();
71
                                logger.warn("IO or Http exception for uri " + uri.toString());
72
                            }
73
                        }
74
                    }
75
                }
76
            }
77
        }
78

    
79
        if (testOnly){
80
            tx.setRollbackOnly();
81
        }
82
        app.commitTransaction(tx);
83
	}
84

    
85

    
86
    /**
87
	 * @param args
88
	 */
89
	public static void main(String[] args) {
90
		GreeceImagesUpdaterActivator me = new GreeceImagesUpdaterActivator();
91
		me.updateMetadata(cdmDestination);
92
//		me.test();
93
		System.exit(0);
94
	}
95

    
96
}
(4-4/7)