merge of localization branch into HEAD. mh and zap
[mir.git] / source / mircoders / producer / MediaGeneratingProducerNode.java
1 package mircoders.producer;
2
3 import java.util.*;
4 import java.io.*;
5 import mir.util.*;
6 import mir.misc.*;
7 import mir.media.*;
8 import mir.producer.*;
9 import mir.generator.*;
10 import mir.entity.*;
11 import mir.entity.adapter.*;
12 //import mircoders.global.*;
13 //import mircoders.localizer.*;
14 import mircoders.entity.*;
15 import mircoders.storage.*;
16
17 public class MediaGeneratingProducerNode implements ProducerNode {
18   private String mediaEntityKey;
19
20   public MediaGeneratingProducerNode(String aMediaEntityKey) {
21     mediaEntityKey = aMediaEntityKey;
22   }
23
24   public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure {
25     Object data;
26     Entity entity;
27     Entity currentMediaType;
28     MirMedia currentMediaHandler;
29
30     try {
31       data = ParameterExpander.findValueForKey( aValueMap, mediaEntityKey );
32
33       if (!(data instanceof EntityAdapter)) {
34         throw new ProducerFailure("MediaGeneratingProducerNode: value of '"+mediaEntityKey+"' is not an EntityAdapter, but an " + data.getClass().getName(), null);
35       }
36
37       entity = ((EntityAdapter) data).getEntity();
38       if (! (entity instanceof EntityUploadedMedia)) {
39         throw new ProducerFailure("MediaGeneratingProducerNode: value of '"+mediaEntityKey+"' is not an uploaded media EntityAdapter, but a " + entity.getClass().getName() + " adapter", null);
40       }
41
42       currentMediaType = DatabaseUploadedMedia.getInstance().getMediaType(entity);
43
44       currentMediaHandler = MediaHelper.getHandler( currentMediaType );
45       currentMediaHandler.produce(entity,currentMediaType);
46       entity.setValueForProperty("publish_server", currentMediaHandler.getPublishHost());
47       entity.setValueForProperty("icon_is_produced", "1");
48       entity.setValueForProperty("is_produced", "1");
49       entity.update();
50     }
51     catch (Throwable t) {
52       aLogger.println("Error while generating media: " + t.getMessage());
53       t.printStackTrace(aLogger);
54
55       throw new ProducerFailure(t.getMessage(), t);
56     }
57   }
58
59   public Set buildVerbSet() {
60     return new HashSet();
61   }
62 }