Changeset c7df86c7052738a28a149788ac58664527812657

Show
Ignore:
Timestamp:
12/09/07 13:25:53 (1 year ago)
Author:
Christopher Jung <bktheg@web.de>
git-committer:
Christopher Jung <bktheg@web.de> 1197203153 +0100
git-parent:

[64aabad5ca20f04ac8601514f002217bbdacea4d]

git-author:
Christopher Jung <bktheg@web.de> 1197203153 +0100
Message:

Admin->QuickQuest? auf Hibernate umgestellt

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • src/net/driftingsouls/ds2/server/modules/admin/QuestsQuick.java

    r28b2039 rc7df86c  
    2121import java.sql.Blob; 
    2222import java.util.HashSet; 
     23import java.util.Iterator; 
     24import java.util.List; 
    2325import java.util.Set; 
    2426 
     
    2931 
    3032import net.driftingsouls.ds2.server.ContextCommon; 
    31 import net.driftingsouls.ds2.server.cargo.Cargo; 
    3233import net.driftingsouls.ds2.server.cargo.ResourceEntry; 
    3334import net.driftingsouls.ds2.server.cargo.ResourceList; 
    34 import net.driftingsouls.ds2.server.entities.User; 
    3535import net.driftingsouls.ds2.server.framework.Common; 
    3636import net.driftingsouls.ds2.server.framework.Context; 
    3737import net.driftingsouls.ds2.server.framework.ContextMap; 
    38 import net.driftingsouls.ds2.server.framework.db.Database; 
    39 import net.driftingsouls.ds2.server.framework.db.PreparedQuery; 
    40 import net.driftingsouls.ds2.server.framework.db.SQLQuery; 
    41 import net.driftingsouls.ds2.server.framework.db.SQLResultRow; 
    4238import net.driftingsouls.ds2.server.modules.AdminController; 
    4339import net.driftingsouls.ds2.server.scripting.ScriptParserContext; 
     40import net.driftingsouls.ds2.server.scripting.entities.CompletedQuest; 
     41import net.driftingsouls.ds2.server.scripting.entities.Quest; 
     42import net.driftingsouls.ds2.server.scripting.entities.QuickQuest; 
     43import net.driftingsouls.ds2.server.scripting.entities.RunningQuest; 
    4444 
    4545import org.apache.commons.lang.StringUtils; 
     
    6060                String qact = context.getRequest().getParameterString("qact"); 
    6161                 
    62                 Database db = context.getDatabase(); 
     62                org.hibernate.Session db = context.getDB(); 
    6363                 
    6464                // Aktiviert das Quest 
    6565                if( qact.equals("enable") ) { 
    66                         SQLResultRow qquest = db.first("SELECT qname, qid FROM quests_quick WHERE id="+id); 
    67                          
    68                         SQLResultRow questdata = db.first("SELECT * FROM quests WHERE qid='"+qquest.getString("qid")+"'"); 
    69                         if( questdata.isEmpty() ) { 
    70                                 PreparedQuery pq = db.prepare("INSERT INTO quests (name,qid) VALUES ( ?, ?)"); 
    71                                 pq.update(qquest.getString("qname"), qquest.getString("qid")); 
    72                                 questdata.put("id", pq.insertID()); 
    73                                 pq.close(); 
    74                         } 
    75                         db.update("UPDATE quests_quick SET enabled='"+questdata.getInt("id")+"' WHERE id="+id); 
     66                        QuickQuest qquest = (QuickQuest)db.get(QuickQuest.class, id); 
     67                         
     68                        Quest questdata = (Quest)db.createQuery("from Quest where qid= :qid") 
     69                                .setString("qid", qquest.getQid()) 
     70                                .uniqueResult(); 
     71                         
     72                        if( questdata == null ) { 
     73                                questdata = new Quest(qquest.getQName()); 
     74                                questdata.setQid(qquest.getQid()); 
     75                                 
     76                                db.save(questdata); 
     77                        } 
     78                        qquest.setEnabled(questdata.getId()); 
    7679                         
    7780                        echo.append("Quest aktiviert<br /><br />"); 
     
    7982                // Deaktiviert das Quest 
    8083                else if( qact.equals("disable") ) { 
    81                         SQLResultRow qquest = db.first("SELECT qname, qid, enabled FROM quests_quick WHERE id="+id); 
    82                          
    83                         db.update("UPDATE quests_quick SET enabled=0 WHERE id="+id); 
     84                        QuickQuest qquest = (QuickQuest)db.get(QuickQuest.class, id); 
    8485                         
    8586                        ScriptEngine scriptparser = context.get(ContextCommon.class).getScriptParser("DSQuestScript"); 
    8687                         
    87                         SQLQuery rquest = db.query("SELECT * FROM quests_running WHERE id="+qquest.getInt("enabled")); 
    88                         while( rquest.next() ) { 
     88                        List rquestList = db.createQuery("from RunningQuest where quest= :qid") 
     89                                .setInteger("qid", qquest.getEnabled()) 
     90                                .list(); 
     91                        for( Iterator iter=rquestList.iterator(); iter.hasNext(); ) { 
     92                                RunningQuest rquest = (RunningQuest)iter.next(); 
     93                                 
    8994                                try { 
    90                                         Blob execdata = rquest.getBlob("execdata"); 
     95                                        Blob execdata = rquest.getExecData(); 
    9196                                        scriptparser.setContext( 
    9297                                                        ScriptParserContext.fromStream(execdata.getBinaryStream()) 
     
    9499                                } 
    95100                                catch( Exception e ) { 
    96                                         echo.append("WARNUNG: Konnte Questdaten nicht laden: Laufendes Quest "+rquest.getInt("id")+"<br />\n"); 
     101                                        echo.append("WARNUNG: Konnte Questdaten nicht laden: Laufendes Quest "+rquest.getId()+"<br />\n"); 
    97102                                } 
    98103                                 
    99104                                final Bindings engineBindings = scriptparser.getContext().getBindings(ScriptContext.ENGINE_SCOPE); 
    100105                                 
    101                                 engineBindings.put("USER", rquest.getInt("userid")); 
    102                                 engineBindings.put("QUEST", "r"+rquest.getInt("id")); 
     106                                engineBindings.put("USER", rquest.getUser().getID()); 
     107                                engineBindings.put("QUEST", "r"+rquest.getId()); 
    103108                                engineBindings.put("_PARAMETERS", "0"); 
    104109                                try { 
     
    108113                                        throw new RuntimeException(e); 
    109114                                } 
    110                                 echo.append("Beende Quest bei Spieler "+rquest.getInt("userid")+"<br />\n"); 
    111                         } 
    112                         rquest.free(); 
     115                                echo.append("Beende Quest bei Spieler "+rquest.getUser().getID()+"<br />\n"); 
     116                        } 
     117                         
     118                        qquest.setEnabled(0); 
    113119                         
    114120                        echo.append("Quest deaktiviert<br /><br />"); 
     
    117123                // Zeige Details zum Quest an 
    118124                if( qact.equals("details") ) { 
    119                         SQLResultRow qquest = db.first("SELECT qname, qid, enabled FROM quests_quick WHERE id="+id); 
     125                        QuickQuest qquest = (QuickQuest)db.get(QuickQuest.class, id); 
    120126                         
    121127                        echo.append(Common.tableBegin(550,"left")); 
    122                         if( qquest.getInt("enabled") != 0 ) { 
     128                        if( qquest.getEnabled() != 0 ) { 
    123129                                echo.append("Aktiv bei:<br /><ul>"); 
    124                                 SQLQuery rquest = db.query("SELECT * FROM quests_running WHERE id="+qquest.getInt("enabled")+" ORDER BY userid"); 
    125                                 while( rquest.next() ) { 
    126                                         User auser = (User)context.getDB().get(User.class, rquest.getInt("userid")); 
    127                                         echo.append("<li>"+Common._title(auser.getName())+" ("+rquest.getInt("userid")+")</li>\n"); 
    128                                 } 
    129                                 rquest.free(); 
     130                                List rquestList = db.createQuery("from RunningQuest rq inner join fetch rq.user where rq.quest= :qid order by rq.user") 
     131                                        .setInteger("qid", qquest.getEnabled()) 
     132                                        .list(); 
     133                                for( Iterator iter=rquestList.iterator(); iter.hasNext(); ) { 
     134                                        RunningQuest rquest = (RunningQuest)iter.next(); 
     135                                         
     136                                        echo.append("<li>"+Common._title(rquest.getUser().getName())+" ("+rquest.getUser().getID()+")</li>\n"); 
     137                                } 
    130138                                echo.append("</ul><br />\n"); 
    131139                        } 
    132140                         
    133141                        echo.append("Abgeschlossen von:<br /><ul>"); 
    134                         SQLQuery rquest = db.query("SELECT qc.* " + 
    135                                         "FROM quests_completed qc JOIN quests q ON qc.questid=q.id " + 
    136                                         "WHERE q.qid='"+qquest.getString("qid")+"' ORDER BY qc.userid"); 
    137                         while( rquest.next() ) { 
    138                                 User auser = (User)context.getDB().get(User.class, rquest.getInt("userid")); 
    139                                 echo.append("<li>"+Common._title(auser.getName())+" ("+rquest.getInt("userid")+")</li>\n"); 
    140                         } 
    141                         rquest.free(); 
     142                        List cquestList = db.createQuery("from CompletedQuest cq inner join fetch cq.quest q inner join fetch cq.user " + 
     143                                        "where q.qid = :qid order by cq.user") 
     144                                .setString("qid", qquest.getQid()) 
     145                                .list(); 
     146                        for( Iterator iter=cquestList.iterator(); iter.hasNext(); ) { 
     147                                CompletedQuest cq = (CompletedQuest)iter.next(); 
     148 
     149                                echo.append("<li>"+Common._title(cq.getUser().getName())+" ("+cq.getUser().getID()+")</li>\n"); 
     150                        } 
    142151                        echo.append("</ul><br />\n"); 
    143152                         
     
    149158                        echo.append("<table class=\"noBorderX\">\n"); 
    150159                         
    151                         SQLQuery qquest = db.query("SELECT qname, qid, id, enabled FROM quests_quick ORDER BY qid"); 
    152                         while( qquest.next() ) { 
    153                                 echo.append("<tr><td class=\"noBorderX\">"+qquest.getString("qid")+"</td>\n"); 
     160                        List qquestList = db.createQuery("from QuickQuest order by qid").list(); 
     161                        for( Iterator iter=qquestList.iterator(); iter.hasNext(); ) { 
     162                                QuickQuest qquest = (QuickQuest)iter.next(); 
     163                                 
     164                                echo.append("<tr><td class=\"noBorderX\">"+qquest.getQid()+"</td>\n"); 
    154165                                echo.append("<td class=\"noBorderX\">&nbsp;&nbsp;&nbsp;" + 
    155166                                                "<a class=\"forschinfo\" " + 
    156                                                         "href=\"./ds?module=admin&sess="+context.getSession()+"&page="+page+"&act="+action+"&id="+qquest.getInt("id")+"&qact=details\"" + 
    157                                                 ">"+qquest.getString("qname")+"</a>" + 
     167                                                        "href=\"./ds?module=admin&sess="+context.getSession()+"&page="+page+"&act="+action+"&id="+qquest.getId()+"&qact=details\"" + 
     168                                                ">"+qquest.getQName()+"</a>" + 
    158169                                                "&nbsp;&nbsp;&nbsp;</td>\n"); 
    159170                                echo.append("<td class=\"noBorderX\">"); 
    160                                 if( qquest.getInt("enabled") == 0 ) { 
    161                                         echo.append("[<a class=\"error\" href=\"./ds?module=admin&sess="+context.getSession()+"&page="+page+"&act="+action+"&id="+qquest.getInt("id")+"&qact=enable\">inaktiv</a>]");  
     171                                if( qquest.getEnabled() == 0 ) { 
     172                                        echo.append("[<a class=\"error\" href=\"./ds?module=admin&sess="+context.getSession()+"&page="+page+"&act="+action+"&id="+qquest.getId()+"&qact=enable\">inaktiv</a>]");       
    162173                                } 
    163174                                else { 
    164                                         echo.append("[<a class=\"ok\" href=\"./ds?module=admin&sess="+context.getSession()+"&page="+page+"&act="+action+"&id="+qquest.getInt("id")+"&qact=disable\">aktiv</a>]"); 
    165                                 } 
    166                                 echo.append(" - [<a class=\"forschinfo\" " + 
    167                                 "href=\"./ds?module=admin&sess="+context.getSession()+"&page="+page+"&act="+action+"&id="+qquest.getInt("id")+"&qact=script\"" + 
    168                                 ">export</a>]"); 
     175                                        echo.append("[<a class=\"ok\" href=\"./ds?module=admin&sess="+context.getSession()+"&page="+page+"&act="+action+"&id="+qquest.getId()+"&qact=disable\">aktiv</a>]"); 
     176                                } 
     177                                /*echo.append(" - [<a class=\"forschinfo\" " + 
     178                                "href=\"./ds?module=admin&sess="+context.getSession()+"&page="+page+"&act="+action+"&id="+qquest.getId()+"&qact=script\"" + 
     179                                ">export</a>]");*/ 
    169180                                echo.append("</td></tr>\n"); 
    170181                        } 
    171                         qquest.free(); 
    172182                        echo.append("</table>\n"); 
    173183                        echo.append(Common.tableEnd()); 
     
    175185                // Exportiert das Quest 
    176186                else if( qact.equals("script") ) { 
    177                         SQLResultRow qquest = db.first("SELECT * FROM quests_quick WHERE id="+id); 
    178                          
    179                         if( (qquest.getString("source").indexOf(',') > -1) || (qquest.getString("target").indexOf(',') > -1) ) { 
     187                        QuickQuest qquest = (QuickQuest)db.get(QuickQuest.class, id); 
     188                         
     189                        if( (qquest.getSource().indexOf(',') > -1) || (qquest.getTarget().indexOf(',') > -1) ) { 
    180190                                echo.append("ERROR: QuickQuest-Scripte unterst&uuml;tzen im Moment nur EINE source und EIN target<br />"); 
    181191                                return; 
    182192                        } 
    183193                         
    184                         int sourceobjectid = Integer.parseInt(qquest.getString("source")); 
    185                         int targetobjectid = Integer.parseInt(qquest.getString("target")); 
    186                          
    187                         String qquest_desc = StringUtils.replace(qquest.getString("desc"), "&", "&amp;"); 
     194                        int sourceobjectid = Integer.parseInt(qquest.getSource()); 
     195                        int targetobjectid = Integer.parseInt(qquest.getTarget()); 
     196                         
     197                        String qquest_desc = StringUtils.replace(qquest.getDescription(), "&", "&amp;"); 
    188198                        qquest_desc = StringUtils.replace(qquest_desc, ">", "&gt;"); 
    189199                        qquest_desc = StringUtils.replace(qquest_desc, "<", "&lt;"); 
    190200                         
    191                         String qquest_shortdesc = StringUtils.replace(qquest.getString("shortdesc"), "&", "&amp;"); 
     201                        String qquest_shortdesc = StringUtils.replace(qquest.getShortDesc(), "&", "&amp;"); 
    192202                        qquest_shortdesc = StringUtils.replace(qquest_shortdesc, ">", "&gt;"); 
    193203                        qquest_shortdesc = StringUtils.replace(qquest_shortdesc, "<", "&lt;"); 
    194204                         
    195                         String qquest_finishtext = StringUtils.replace(qquest.getString("finishtext"), "&", "&amp;"); 
     205                        String qquest_finishtext = StringUtils.replace(qquest.getFinishText(), "&", "&amp;"); 
    196206                        qquest_finishtext = StringUtils.replace(qquest_finishtext, ">", "&gt;"); 
    197207                        qquest_finishtext = StringUtils.replace(qquest_finishtext, "<", "&lt;"); 
    198208                         
    199                         String qquest_notyettext = StringUtils.replace(qquest.getString("notyettext"), "&", "&amp;"); 
     209                        String qquest_notyettext = StringUtils.replace(qquest.getNotYetText(), "&", "&amp;"); 
    200210                        qquest_notyettext = StringUtils.replace(qquest_notyettext, ">", "&gt;"); 
    201211                        qquest_notyettext = StringUtils.replace(qquest_notyettext, "<", "&lt;"); 
     
    205215                         
    206216                        Set<String> reqFileList = new HashSet<String>(); 
    207                         if( qquest.getString("sourcetype").equals("gtuposten") ||  
    208                                 qquest.getString("targettype").equals("gtuposten") ) { 
    209                                  
    210                                 if( qquest.getString("sourcetype").equals("gtuposten") ) { 
     217                        if( qquest.getSourceType().equals("gtuposten") ||  
     218                                qquest.getTargetType().equals("gtuposten") ) { 
     219                                 
     220                                if( qquest.getSourceType().equals("gtuposten") ) { 
    211221                                        reqFileList.add("gtu-posten-"+sourceobjectid+".xml"); 
    212222                                } 
    213                                 if( qquest.getString("targettype").equals("gtuposten") ) { 
     223                                if( qquest.getTargetType().equals("gtuposten") ) { 
    214224                                        reqFileList.add("gtu-posten-"+targetobjectid+".xml"); 
    215225                                } 
     
    217227                        } 
    218228                         
    219                         if( qquest.getString("dependsOnQuests").length() > 0 ) { 
    220                                 String[] dquests = StringUtils.split(qquest.getString("dependsOnQuests"), ';'); 
     229                        if( qquest.getDependsOnQuests().length() > 0 ) { 
     230                                String[] dquests = StringUtils.split(qquest.getDependsOnQuests(), ';'); 
    221231                                for( int i=0; i < dquests.length; i++ ) { 
    222232                                        String[] tmp = StringUtils.split(dquests[i], ':'); 
     
    226236                         
    227237                        echo.append("&lt;?xml version='1.0' encoding='UTF-8'?&gt;<br />\n"); 
    228                         echo.append("&lt;quest id=\""+qquest.getString("qid")+"\" name=\""+qquest.getString("qname")+"\"&gt;<br />\n"); 
     238                        echo.append("&lt;quest id=\""+qquest.getQid()+"\" name=\""+qquest.getQName()+"\"&gt;<br />\n"); 
    229239                        for( String file : reqFileList ) { 
    230240                                echo.append("&lt;require file=\""+file+"\" /&gt;<br />\n");      
     
    234244                         * Dialog Questbeschreibung ("info") 
    235245                         */ 
    236                         echo.append("&lt;dialog id=\"info\" picture=\""+qquest.getString("head")+"\"&gt;<br />\n"); 
     246                        echo.append("&lt;dialog id=\"info\" picture=\""+qquest.getHead()+"\"&gt;<br />\n"); 
    237247                        echo.append(nl2br(qquest_shortdesc)+"<br />\n"); 
    238248                        echo.append("[hr]<br />\n"); 
    239249                        echo.append(nl2br(qquest_desc)+"<br />\n<br />\n"); 
    240                         if( (qquest.getString("reqitems").length() > 0) || (qquest.getLong("reqre") > 0) ) { 
     250                        if( !qquest.getReqItems().isEmpty() || (qquest.getReqRe() > 0) ) { 
    241251                                echo.append("Benötigt:[color=red]<br />\n"); 
    242                                 if( qquest.getString("reqitems").length() > 0 ) { 
    243                                         Cargo cargo = new Cargo(Cargo.Type.STRING, qquest.getString("reqitems")); 
    244                                  
    245                                         ResourceList reslist = cargo.getResourceList(); 
     252                                if( !qquest.getReqItems().isEmpty() ) { 
     253                                        ResourceList reslist = qquest.getReqItems().getResourceList(); 
    246254                                        for( ResourceEntry res : reslist ) { 
    247255                                                echo.append("[resource="+res.getId()+"]"+res.getCount1()+"[/resource]<br />\n");         
    248256                                        } 
    249257                                } 
    250                                 if( qquest.getLong("reqre") > 0 ) { 
    251                                         echo.append(Common.ln(qquest.getLong("reqre"))+" RE\n"); 
     258                                if( qquest.getReqRe() > 0 ) { 
     259                                        echo.append(Common.ln(qquest.getReqRe())+" RE\n"); 
    252260                                } 
    253261                                echo.append("[/color]<br /><br />\n\n"); 
    254262                        } 
    255                         if( qquest.getString("awarditems").length() > 0 ) { 
     263                        if( !qquest.getAwardItems().isEmpty() ) { 
    256264                                echo.append("Belohnung in Waren:<br />\n"); 
    257                                 Cargo cargo = new Cargo(Cargo.Type.STRING, qquest.getString("awarditems")); 
    258                                  
    259                                 ResourceList reslist = cargo.getResourceList(); 
     265                                 
     266                                ResourceList reslist = qquest.getAwardItems().getResourceList(); 
    260267                                for( ResourceEntry res : reslist ) { 
    261268                                        echo.append("[resource="+res.getId()+"]"+res.getCount1()+"[/resource]<br />\n");         
    262269                                } 
    263270                        } 
    264                         if( qquest.getString("awardre").length() > 0 ) { 
    265                                 echo.append("Belohnung in RE: "+Common.ln(Long.parseLong(qquest.getString("awardre")))+"<br />\n");    
     271                        if( qquest.getAwardRe() != 0 ) { 
     272                                echo.append("Belohnung in RE: "+Common.ln(qquest.getAwardRe())+"<br />\n");    
    266273                        } 
    267274                        echo.append("&lt;/dialog&gt;<br />\n"); 
     
    270277                         * Dialog Quest noch nicht erfuellt ("notyet") 
    271278                         */ 
    272                         echo.append("&lt;dialog id=\"notyet\" picture=\""+qquest.getString("head")+"\"&gt;<br />\n"); 
     279                        echo.append("&lt;dialog id=\"notyet\" picture=\""+qquest.getHead()+"\"&gt;<br />\n"); 
    273280                        if( qquest_notyettext.length() == 0 ) { 
    274281                                echo.append("Tut mir leid. Du hast die Aufgabe noch nicht komplett erledigt.<br />\n"); 
     
    282289                         * Dialog Quest beendet ("ready") 
    283290                         */ 
    284                         echo.append("&lt;dialog id=\"ready\" picture=\""+qquest.getString("head")+"\"&gt;<br />\n"); 
     291                        echo.append("&lt;dialog id=\"ready\" picture=\""+qquest.getHead()+"\"&gt;<br />\n"); 
    285292                        if( qquest_finishtext.length() == 0 ) { 
    286293                                echo.append("Sehr gut! Du hast deine Aufgabe beendet.<br />\n"); 
     
    290297                                echo.append(nl2br(qquest_finishtext)+"<br />\n<br />\n");        
    291298                        } 
    292                         if( qquest.getString("awarditems").length() > 0 ) { 
     299                        if( !qquest.getAwardItems().isEmpty() ) { 
    293300                                echo.append("Belohnung in Waren:<br />\n"); 
    294                                 Cargo cargo = new Cargo(Cargo.Type.STRING, qquest.getString("awarditems")); 
    295                                  
    296                                 ResourceList reslist = cargo.getResourceList(); 
     301                                 
     302                                ResourceList reslist = qquest.getAwardItems().getResourceList(); 
    297303                                for( ResourceEntry res : reslist ) { 
    298304                                        echo.append("[resource="+res.getId()+"]"+res.getCount1()+"[/resource]<br />\n");         
     
    300306                                echo.append("<br />\n"); 
    301307                        } 
    302                         if( qquest.getString("awardre").length() > 0 ) { 
    303                                 echo.append("Belohnung in RE: "+Common.ln(Long.parseLong(qquest.getString("awardre")))+"<br />\n");    
     308                        if( qquest.getAwardRe() != 0 ) { 
     309                                echo.append("Belohnung in RE: "+Common.ln(qquest.getAwardRe())+"<br />\n");    
    304310                        } 
    305311                        echo.append("&lt;/dialog&gt;<br />\n"); 
     
    310316                        echo.append("&lt;answer id=\"yes\"&gt;Annehmen&lt;/answer&gt;<br />\n"); 
    311317                        echo.append("&lt;answer id=\"no\"&gt;Ablehnen&lt;/answer&gt;<br />\n"); 
    312                         echo.append("&lt;answer id=\"endquest\"&gt;Auftrag &amp;gt;"+qquest.getString("qname")+"&amp;lt; beenden&lt;/answer&gt;<br />\n"); 
    313                         echo.append("&lt;answer id=\"startquest\"&gt;Auftrag &amp;gt;"+qquest.getString("qname")+"&amp;lt;&lt;/answer&gt;<br />\n"); 
     318                        echo.append("&lt;answer id=\"endquest\"&gt;Auftrag &amp;gt;"+qquest.getQName()+"&amp;lt; beenden&lt;/answer&gt;<br />\n"); 
     319                        echo.append("&lt;answer id=\"startquest\"&gt;Auftrag &amp;gt;"+qquest.getQName()+"&amp;lt;&lt;/answer&gt;<br />\n"); 
    314320                         
    315321                        /* 
     
    319325                         */ 
    320326                         
    321                         String tsParams = qquest.getString("qid")+"_finish"; 
     327                        String tsParams = qquest.getQid()+"_finish"; 
    322328                         
    323329                        // Menu 
    324330                        StringBuilder tsMenu = new StringBuilder(); 
    325                         tsMenu.append("!LoadQuestContext &lt;questid id=\""+qquest.getString("qid")+"\" /&gt;<br />\n"); 
     331                        tsMenu.append("!LoadQuestContext &lt;questid id=\""+qquest.getQid()+"\" /&gt;<br />\n"); 
    326332                        tsMenu.append("!GETQUESTID #QUEST<br />\n"); 
    327                         tsMenu.append("!COMPARE #A &lt;questid id=\""+qquest.getString("qid")+"\" /&gt;<br />\n"); 
    328                         tsMenu.append("!JNE 0_questfinal"+qquest.getString("qid")+"_endcont<br />\n"); 
     333                        tsMenu.append("!COMPARE #A &lt;questid id=\""+qquest.getQid()+"\" /&gt;<br />\n"); 
     334                        tsMenu.append("!JNE 0_questfinal"+qquest.getQid()+"_endcont<br />\n"); 
    329335                         
    330336                        tsMenu.append("!COMPARE #QSTATUS 1<br />\n"); 
    331                         tsMenu.append("!JNE 0_questfinal"+qquest.getString("qid")+"_endcont<br />\n"); 
    332                          
    333                         tsMenu.append("!ADDANSWER &lt;answerid id=\"endquest\" /&gt; "+qquest.getString("qid")+"_finish<br />\n"); 
    334                         tsMenu.append("!JUMP 0_questfinal"+qquest.getString("qid")+"_endcont<br />\n"); 
     337                        tsMenu.append("!JNE 0_questfinal"+qquest.getQid()+"_endcont<br />\n"); 
     338                         
     339                        tsMenu.append("!ADDANSWER &lt;answerid id=\"endquest\" /&gt; "+qquest.getQid()+"_finish<br />\n"); 
     340                        tsMenu.append("!JUMP 0_questfinal"+qquest.getQid()+"_endcont<br />\n"); 
    335341                 
    336                         tsMenu.append(":0_questfinal"+qquest.getString("qid")+"_endcont<br />\n<br />\n"); 
     342                        tsMenu.append(":0_questfinal"+qquest.getQid()+"_endcont<br />\n<br />\n"); 
    337343                         
    338344                        // Code 
    339345                        StringBuilder tsCode = new StringBuilder(); 
    340                         tsCode.append(":"+qquest.getString("qid")+"_finish<br />\n"); 
    341                         tsCode.append("!LoadQuestContext &lt;questid id=\""+qquest.getString("qid")+"\" /&gt;<br />\n"); 
     346                        tsCode.append(":"+qquest.getQid()+"_finish<br />\n"); 
     347                        tsCode.append("!LoadQuestContext &lt;questid id=\""+qquest.getQid()+"\" /&gt;<br />\n"); 
    342348                        tsCode.append("!GETQUESTID #QUEST<br />\n"); 
    343                         tsCode.append("!COMPARE #A &lt;questid id=\""+qquest.getString("qid")+"\" /&gt;<br />\n"); 
     349                        tsCode.append("!COMPARE #A &lt;questid id=\""+qquest.getQid()+"\" /&gt;<br />\n"); 
    344350                        tsCode.append("!JNE 0<br />\n"); 
    345351                        tsCode.append("!COMPARE #QSTATUS 1<br />\n"); 
     
    347353                         
    348354                        // Die zum beenden benoetigten Items checken 
    349                         if( qquest.getString("reqitems").length() > 0 ) { 
    350                                 Cargo cargo = new Cargo( Cargo.Type.STRING, qquest.getString("reqitems") ); 
    351                                  
     355                        if( !qquest.getReqItems().isEmpty() ) { 
    352356                                tsCode.append("// Resourcen ueberpruefen<br />\n"); 
    353357                                tsCode.append("!COPYVAR #ship shipsource.cargo<br />\n"); 
    354                                 ResourceList reslist = cargo.getResourceList(); 
     358                                ResourceList reslist = qquest.getReqItems().getResourceList(); 
    355359                                for( ResourceEntry res : reslist ) { 
    356360                                        if( res.getId().isItem() && (res.getId().getQuest() != 0) ) { 
    357361                                                tsCode.append("!HASQUESTITEM #ship "+res.getId().getItemID()+" "+res.getCount1()+"<br />\n"); 
    358                                                 tsCode.append("!JLE "+qquest.getString("qid")+"_finish_notyet<br />\n"); 
     362                                                tsCode.append("!JLE "+qquest.getQid()+"_finish_notyet<br />\n"); 
    359363                                                tsCode.append("!ADDQUESTITEM #ship "+res.getId().getItemID()+" -"+res.getCount1()+"<br />\n"); 
    360364                                        } 
    361365                                        else { 
    362366                                                tsCode.append("!HASRESOURCE #ship "+res.getId()+" "+res.getCount1()+"<br />\n"); 
    363                                                 tsCode.append("!JLE "+qquest.getString("qid")+"_finish_notyet<br />\n"); 
     367                                                tsCode.append("!JLE "+qquest.getQid()+"_finish_notyet<br />\n"); 
    364368                                                tsCode.append("!ADDRESOURCE #ship "+res.getId()+" -"+res.getCount1()+"<br />\n"); 
    365369                                        } 
     
    367371                                tsCode.append("!COPY #ship 0<br />\n"); 
    368372                        } 
    369                         if( qquest.getLong("reqre") > 0 ) { 
     373                        if( qquest.getReqRe() > 0 ) { 
    370374                                tsCode.append("// RE ueberpruefen<br />\n"); 
    371375                                tsCode.append("!GETMONEY #USER<br />\n"); 
    372                                 tsCode.append("!COMPARE #A "+qquest.getLong("reqre")+"<br />\n"); 
    373                                 tsCode.append("!JL "+qquest.getString("qid")+"_finish_notyet<br />\n"); 
     376                                tsCode.append("!COMPARE #A "+qquest.getReqRe()+"<br />\n"); 
     377                                tsCode.append("!JL "+qquest.getQid()+"_finish_notyet<br />\n"); 
    374378                        } 
    375379                         
    376380                        // Nun die Items/RE auch wirklich abbuchen... 
    377                         if( qquest.getString("reqitems").length() > 0 ) { 
    378                                 Cargo cargo = new Cargo( Cargo.Type.STRING, qquest.getString("reqitems") ); 
    379                                  
     381                        if( !qquest.getReqItems().isEmpty() ) { 
    380382                                tsCode.append("// Resourcen abbuchen<br />\n"); 
    381383                                tsCode.append("!COPYVAR #ship shipsource.cargo<br />\n"); 
    382                                 ResourceList reslist = cargo.getResourceList(); 
     384                                ResourceList reslist = qquest.getReqItems().getResourceList(); 
    383385                                for( ResourceEntry res : reslist ) { 
    384386                                        if( res.getId().isItem() && (res.getId().getQuest() != 0) ) { 
     
    392394                                tsCode.append("!COPY #ship 0<br />\n"); 
    393395                        } 
    394                         if( qquest.getLong("reqre") > 0 ) { 
    395                                 tsCode.append("#reqmoneytext = \"Kosten Quest \'"+qquest.getString("qname")+"\'\"<br />\n"); 
    396                                 tsCode.append("!ADDMONEY 0 #USER "+qquest.getLong("reqre")+" #reqmoneytext 0<br />\n"); 
     396                        if( qquest.getReqRe() > 0 ) { 
     397                                tsCode.append("#reqmoneytext = \"Kosten Quest \'"+qquest.getQName()+"\'\"<br />\n"); 
     398                                tsCode.append("!ADDMONEY 0 #USER "+qquest.getReqRe()+" #reqmoneytext 0<br />\n"); 
    397399                        } 
    398400                         
    399401                        // Belohnungen (Waren/RE) 
    400                         if( qquest.getString("awarditems").length() > 0 ) { 
    401                                 Cargo cargo = new Cargo( Cargo.Type.STRING, qquest.getString("awarditems") ); 
     402                        if( !qquest.getAwardItems().isEmpty() ) { 
    402403                                tsCode.append("// Resourcen ueberpruefen<br />\n"); 
    403404                                tsCode.append("!COPYVAR #ship shipsource.cargo<br />\n"); 
    404405 
    405                                 ResourceList reslist = cargo.getResourceList(); 
     406                                ResourceList reslist = qquest.getAwardItems().getResourceList(); 
    406407                                for( ResourceEntry res : reslist ) { 
    407408                                        tsCode.append("!ADDRESOURCE #ship "+res.getId()+" "+res.getCount1()+"<br />\n"); 
     
    410411                                tsCode.append("!COPY #ship 0<br />\n");                          
    411412                        } 
    412                         if( qquest.getString("awardre").length() > 0 ) { 
    413                                 tsCode.append("#addmoneytext = \"Belohnung Quest \'"+qquest.getString("qname")+"\'\"<br />\n"); 
    414                                 tsCode.append("!ADDMONEY #USER 0 "+qquest.getString("awardre")+" #addmoneytext 1<br />\n"); 
     413                        if( qquest.getAwardRe() != 0 ) { 
     414                                tsCode.append("#addmoneytext = \"Belohnung Quest \'"+qquest.getQName()+"\'\"<br />\n"); 
     415                                tsCode.append("!ADDMONEY #USER 0 "+qquest.getAwardRe()+" #addmoneytext 1<br />\n"); 
    415416                        } 
    416417                        tsCode.append("!COMPLETEQUEST #QUEST<br />\n"); 
     
    421422                        tsCode.append("!PAUSE<br />\n<br />\n"); 
    422423                         
    423                         tsCode.append(":"+qquest.getString("qid")+"_finish_notyet<br />\n"); 
     424                        tsCode.append(":"+qquest.getQid()+"_finish_notyet<br />\n"); 
    424425                        tsCode.append("!LOADDIALOG &lt;dialogid id=\"notyet\" /&gt;<br />\n"); 
    425426                        tsCode.append("!ADDANSWER &lt;answerid id=\"gtu-posten-generic:ende\" /&gt; quit<br />\n"); 
     
    433434                         */ 
    434435                         
    435                         if( qquest.getString("sourcetype").equals("gtuposten") ) { 
     436                        if( qquest.getSourceType().equals("gtuposten") ) { 
    436437                                echo.append("&lt;injectscript id=\"gtu-posten-"+sourceobjectid+":posten\"&gt;<br />\n"); 
    437438                        } 
    438439                        else { 
    439                                 echo.append("WARNUNG: unbekannter sourcetype '"+qquest.getString("sourcetype")+"' - injectscript muss manuell eingefuegt werden<br />\n");     
     440                                echo.append("WARNUNG: unbekannter sourcetype '"+qquest.getSourceType()+"' - injectscript muss manuell eingefuegt werden<br />\n");     
    440441                        } 
    441442                        echo.append("&lt;part id=\"parameters\"&gt;"); 
    442                         echo.append(qquest.getString("qid")+" "+qquest.getString("qid")+"_yes"); 
     443                        echo.append(qquest.getQid()+" "+qquest.getQid()+"_yes"); 
    443444                        if( sourceobjectid == targetobjectid ) { 
    444445                                echo.append(" "+tsParams);       
     
    449450                        echo.append("&lt;part id=\"menu\"&gt;<br />\n"); 
    450451                        echo.append("// Quest bereits beendet? Dann zum naechsten Quest<br />\n"); 
    451                         if( qquest.getInt("moreThanOnce") == 0 ) { 
    452                                 echo.append("!HASQUESTCOMPLETED &lt;questid id=\""+qquest.getString("qid")+"\" /&gt;<br />\n"); 
    453                                 echo.append("!JG 0_quest"+qquest.getString("qid")+"_endcont<br />\n"); 
    454                         } 
    455                          
    456                         if( qquest.getString("dependsOnQuests").length() > 0 ) { 
    457                                 String[] dquests = StringUtils.split(qquest.getString("dependsOnQuests"), ';'); 
     452                        if( !qquest.getMoreThanOnce() ) { 
     453                                echo.append("!HASQUESTCOMPLETED &lt;questid id=\""+qquest.getQid()+"\" /&gt;<br />\n"); 
     454                                echo.append("!JG 0_quest"+qquest.getQid()+"_endcont<br />\n"); 
     455                        } 
     456                         
     457                        if( qquest.getDependsOnQuests().length() > 0 ) { 
     458                                String[] dquests = StringUtils.split(qquest.getDependsOnQuests(), ';'); 
    458459                                for( int i=0; i < dquests.length; i++ ) { 
    459460                                        echo.append("!HASQUESTCOMPLETED &lt;questid id=\""+dquests[i]+"\" /&gt;<br />\n"); 
    460                                         echo.append("!JLE 0_quest"+qquest.getString("qid")+"_endcont<br />\n");        
     461                                        echo.append("!JLE 0_quest"+qquest.getQid()+"_endcont<br />\n");        
    461462                                }        
    462463                        } 
    463464                         
    464465                        echo.append("// Hat der Spieler das Quest bereits angenommen?<br />\n"); 
    465                         echo.append("!LoadQuestContext &lt;questid id=\""+qquest.getString("qid")+"\" /&gt;<br />\n"); 
     466                        echo.append("!LoadQuestContext &lt;questid id=\""+qquest.getQid()+"\" /&gt;<br />\n"); 
    466467                        echo.append("!COMPARE #QSTATUS 1<br />\n"); 
    467                         echo.append("!JGE 0_quest"+qquest.getString("qid")+"_endcont<br />\n"); 
    468                         echo.append("!ADDANSWER &lt;answerid id=\"startquest\" /&gt; "+qquest.getString("qid")+"<br />\n"); 
    469                         echo.append("!JUMP 0_quest"+qquest.getString("qid")+"_endcont<br />\n"); 
    470                         echo.append(":0_quest"+qquest.getString("qid")+"_endcont<br />\n<br />\n"); 
     468                        echo.append("!JGE 0_quest"+qquest.getQid()+"_endcont<br />\n"); 
     469                        echo.append("!ADDANSWER &lt;answerid id=\"startquest\" /&gt; "+qquest.getQid()+"<br />\n"); 
     470                        echo.append("!JUMP 0_quest"+qquest.getQid()+"_endcont<br />\n"); 
     471                        echo.append(":0_quest"+qquest.getQid()+"_endcont<br />\n<br />\n"); 
    471472                        if( sourceobjectid == targetobjectid ) { 
    472473                                echo.append("<br />\n"+tsMenu);  
     
    476477                        // Codepart (Start) 
    477478                        echo.append("&lt;part id=\"code\"&gt;<br />\n"); 
    478                         echo.append("// Auftrag "+qquest.getString("qid")+"<br />\n"); 
    479                         echo.append(":"+qquest.getString("qid")+"<br />\n"); 
    480                         echo.append("!LoadQuestContext &lt;questid id=\""+qquest.getString("qid")+"\" /&gt;<br />\n"); 
     479                        echo.append("// Auftrag "+qquest.getQid()+"<br />\n"); 
     480                        echo.append(":"+qquest.getQid()+"<br />\n"); 
     481                        echo.append("!LoadQuestContext &lt;questid id=\""+qquest.getQid()+"\" /&gt;<br />\n"); 
    481482                        echo.append("!GETQUESTID #QUEST<br />\n"); 
    482                         echo.append("!COMPARE #A &lt;questid id=\""+qquest.getString("qid")+"\" /&gt;<br />\n"); 
     483                        echo.append("!COMPARE #A &lt;questid id=\""+qquest.getQid()+"\" /&gt;<br />\n"); 
    483484                        echo.append("!JE 0<br />\n"); 
    484                         if( qquest.getInt("moreThanOnce") == 0 ) { 
    485                                 echo.append("!HASQUESTCOMPLETED &lt;questid id=\""+qquest.getString("qid")+"\" /&gt;<br />\n"); 
     485                        if( !qquest.getMoreThanOnce() ) { 
     486                                echo.append("!HASQUESTCOMP