Initial revision
[mir.git] / source / mircoders / producer / ProducerOverview.java
1 package mircoders.producer;
2
3 import java.io.*;
4 import java.lang.*;
5 import java.util.*;
6 import java.sql.*;
7
8 import freemarker.template.*;
9
10 import webdb.misc.*;
11 import webdb.storage.*;
12 import webdb.module.*;
13 import webdb.entity.*;
14
15 import mir.module.*;
16 import mir.entity.*;
17 import mir.storage.*;
18
19
20
21 public class ProducerOverview extends Producer {
22
23         static String           monthTemplate;
24         static String           yearTemplate;
25         static int              numberOfTermine;
26
27         static {
28                 // Initialierung
29                 monthTemplate = Configuration.getProperty("Producer.Overview.MonthTemplate");
30                 yearTemplate = Configuration.getProperty("Producer.Overview.YearTemplate");
31                 numberOfTermine = Integer.parseInt(Configuration.getProperty("Producer.Startseite.Termine"));
32         }
33
34         public static void main(String argv[]){
35                 try {
36                         new ProducerOverview().handle(new PrintWriter(System.out), null, false, false);
37                 }
38                 catch(Exception e) {
39                         System.err.println(e.toString());
40                 }
41         }
42
43         public void handle(PrintWriter htmlout, EntityUsers user, boolean force, boolean sync)
44                 throws StorageObjectException, ModuleException
45         {
46                 logHTML(htmlout, "Producer.Overview: started");
47
48                 long                sessionConnectTime = 0;
49                 long                startTime = (new java.util.Date()).getTime();
50                 String              nowWebdbDate = StringUtil.date2webdbDate(new GregorianCalendar());
51                 String              whereClause;
52                 String              orderBy="date";
53                 String              fileName;
54                 EntityContent       currentContent;
55                 EntityList          monatsListe;
56                 EntityList          batchEntityList;
57                 EntityGruppen       userEntity=null;
58
59                 SimpleHash gruppenPopupData = gruppenModule.getHashData();
60                 SimpleHash themenPopupData = topicsModule.getHashData();
61                 SimpleHash schwerpunktPopupData = schwerpunktModule.getHashData();
62                 ArrayList yearArrayList = new ArrayList();
63                 HashMap yearHash = new HashMap();
64
65                 // Datenstrukturen fuer Themen/Schwerpunkt aufbauen
66                 batchEntityList = schwerpunktModule.getByWhereClause("is_published!=0", 0);
67                 SimpleList schwerpunktList = HTMLTemplateProcessor.makeSimpleList(batchEntityList);
68                 batchEntityList = contentModule.getContent("(date_from<="+ nowWebdbDate +" and date_to>=" + nowWebdbDate+ ")", "", 0, numberOfTermine, null);
69                 SimpleList terminList = HTMLTemplateProcessor.makeSimpleList(batchEntityList);
70                 batchEntityList = topicsModule.getByWhereClause("","title",-1);
71                 SimpleList themenList = HTMLTemplateProcessor.makeSimpleList(batchEntityList);
72
73                 Connection con=null;
74                 Statement stmt=null;
75                 ResultSet rs=null;
76                 DatabaseContent dbContent=DatabaseContent.getInstance();
77
78                 String sql = "select distinct LEFT(date,6) as date from content order by date desc";
79                 try {
80                         con = dbContent.getPooledCon();
81                         stmt = con.createStatement();
82                         rs = dbContent.executeSql(stmt,sql);
83
84                         //jetzt übersetzen wir month in text
85                         SimpleHash monatslookup = new SimpleHash();
86                         monatslookup.put("01","Januar");
87                         monatslookup.put("02","Februar");
88                         monatslookup.put("03","M&auml;rz");
89                         monatslookup.put("04","April");
90                         monatslookup.put("05","Mai");
91                         monatslookup.put("06","Juni");
92                         monatslookup.put("07","Juli");
93                         monatslookup.put("08","August");
94                         monatslookup.put("09","September");
95                         monatslookup.put("10","Oktober");
96                         monatslookup.put("11","November");
97                         monatslookup.put("12","Dezember");
98
99
100                         // fuer alle yyyy/mm
101                         while(rs.next()){
102                                 //  select * from content_objekt where datum like yyyymm%
103                                 String currentDate = rs.getString(1);
104                                 whereClause="date like '"+ currentDate + "%' and is_published!=0 and islink=0";
105                         monatsListe = contentModule.getContent(whereClause, orderBy, 0, -1, userEntity);
106
107                                 //   baue uebersichtsseite aus erbenis
108         if (monatsListe!=null) {
109                                         SimpleList items = new SimpleList();
110                                         for(int i=0;i<monatsListe.size();i++) {
111                                                 currentContent = (EntityContent)monatsListe.elementAt(i);
112                                                 items.add(HTMLTemplateProcessor.makeSimpleHash(currentContent));
113                                         }
114                                         String year = currentDate.substring(0,4);
115                                         String month = currentDate.substring(4,6);
116                                         fileName = producerDocRoot + "/"
117                                                                                  + year + "/"
118                                                                                  + month
119                                                                                  + "/index.html";
120
121
122                                         // wir merken uns mal was ...
123
124
125                                         if (!yearArrayList.contains(year)) yearArrayList.add(year);
126                                         if (!yearHash.containsKey(year)) yearHash.put(year, new SimpleList());
127                                         ((SimpleList)yearHash.get(year)).add(month);// hier hab ich wieder month eingefuegt, statt des gepatchten monats
128
129                                         SimpleHash mergeData = new SimpleHash();
130                                         mergeData.put("year",year);
131                                         mergeData.put("month",month); // hier hab ich wieder month eingefuegt, statt des gepatchten monats
132                                         mergeData.put("content", items);
133                                         mergeData.put("schwerpunkt", schwerpunktList);
134                                         mergeData.put("termine", terminList);
135                                         mergeData.put("themen", themenList);
136                                         mergeData.put("gruppenPopupData", gruppenPopupData);
137                                         mergeData.put("themenPopupData", themenPopupData);
138                                         mergeData.put("schwerpunktPopupData", schwerpunktPopupData);
139                                         mergeData.put("producerDocRoot", producerDocRoot);
140                                         mergeData.put("monatslookup",monatslookup);
141                 boolean retVal = produce_compressed(monthTemplate, fileName, mergeData, htmlout);
142                                 } //end if
143                         }//end while
144
145
146                         SimpleList item = new SimpleList();
147                         for(int i=0;i<yearArrayList.size();i++){
148                                 String year = (String)yearArrayList.get(i);
149                                 SimpleHash entry = new SimpleHash();
150                                 entry.put("name", year);
151                                 entry.put("mm",(SimpleList)yearHash.get(year));
152                                 item.add(entry);
153                         }
154                         SimpleHash mergeData = new SimpleHash();
155                         mergeData.put("content", item);
156                         mergeData.put("schwerpunkt", schwerpunktList);
157                         mergeData.put("termine", terminList);
158                         mergeData.put("themen", themenList);
159                         mergeData.put("gruppenPopupData", gruppenPopupData);
160                         mergeData.put("themenPopupData", themenPopupData);
161                         mergeData.put("schwerpunktPopupData", schwerpunktPopupData);
162                         mergeData.put("producerDocRoot", producerDocRoot);
163                         mergeData.put("monatslookup", monatslookup);
164                         boolean retVal = produce_compressed(yearTemplate, producerDocRoot+"/uebersicht.html", mergeData, htmlout);
165
166                         } catch (Exception e) {
167                                 theLog.printDebugInfo("overview gescheitert! schade"+e.toString());
168                         } finally {
169                                 dbContent.freeConnection(con,stmt);
170                         }
171
172                         // Finish
173                         sessionConnectTime = new java.util.Date().getTime() - startTime;
174                         logHTML(htmlout, "Producer.Content finished: " + sessionConnectTime + " ms.");
175
176                 } //end handle
177 }