From: mh Date: Sun, 21 Jul 2002 22:41:45 +0000 (+0000) Subject: make use of new MediaRequest class. A big cleanup and optimization. X-Git-Tag: MIR_1_0_0_RC1~44 X-Git-Url: http://erislabs.net/gitweb/?p=mir.git;a=commitdiff_plain;h=b8a81294224748fc3461450dbe4124f4b70d8bcf make use of new MediaRequest class. A big cleanup and optimization. --- diff --git a/source/mircoders/servlet/ServletModuleOpenIndy.java b/source/mircoders/servlet/ServletModuleOpenIndy.java index 2ef627cd..cd4cbd5c 100755 --- a/source/mircoders/servlet/ServletModuleOpenIndy.java +++ b/source/mircoders/servlet/ServletModuleOpenIndy.java @@ -33,6 +33,7 @@ import mircoders.entity.*; import mircoders.storage.*; import mircoders.module.*; import mircoders.producer.*; +import mircoders.media.MediaRequest; /* * ServletModuleOpenIndy - @@ -41,9 +42,12 @@ import mircoders.producer.*; * open-postings to the newswire * * @author $Author: mh $ - * @version $Revision: 1.36 $ $Date: 2002/06/29 15:45:20 $ + * @version $Revision: 1.37 $ $Date: 2002/07/21 22:41:45 $ * * $Log: ServletModuleOpenIndy.java,v $ + * Revision 1.37 2002/07/21 22:41:45 mh + * make use of new MediaRequest class. A big cleanup and optimization. + * * Revision 1.36 2002/06/29 15:45:20 mh * cvs macros * @@ -245,6 +249,14 @@ public class ServletModuleOpenIndy extends ServletModule try { WebdbMultipartRequest mp = new WebdbMultipartRequest(req); + + EntityList mediaList = null; + try { + // new MediaRequest, "1" is the id for the openPosting user + mediaList = new MediaRequest(mp, "1").getMedia(true, true); + } catch (MirMediaUserException e) { + throw new ServletModuleUserException(e.getMsg()); + } HashMap withValues = mp.getParameters(); @@ -286,9 +298,9 @@ public class ServletModuleOpenIndy extends ServletModule withValues.put("date", StringUtil.date2webdbDate(new GregorianCalendar())); withValues.put("publish_path", StringUtil.webdbDate2path((String)withValues.get("date"))); withValues.put("is_produced", "0"); - // op-articles are not immediatly published - // we don't know that all is good yet (media, title is present, etc..) - withValues.put("is_published","0"); + // by default stuff is published, they can be un-published through the + // admin interface. + withValues.put("is_published","1"); // if op direct article-type == newswire if (directOp.equals("yes")) withValues.put("to_article_type","1"); @@ -323,182 +335,12 @@ public class ServletModuleOpenIndy extends ServletModule throw new ServletModuleException("smod - openindy :: insposting: setting content_x_topic failed: "+e.toString()); } //end try } //end if - - // if op contains uploaddata - String mediaId=null; - int i=1; - for(Iterator it = mp.requestList.iterator(); it.hasNext();){ - MpRequest mpReq = (MpRequest)it.next(); - String fileName = mpReq.getFilename(); - - //get the content-type from what the client browser - //sends us. (the "Oreilly method") - String contentType = mpReq.getContentType(); - - theLog.printInfo("FROM BROWSER: "+contentType); - - //if the client browser sent us unknown (text/plain is default) - //or if we got application/octet-stream, it's possible that - //the browser is in error, better check against the file extension - if (contentType.equals("text/plain") || - contentType.equals("application/octet-stream")) { - /** - * Fallback to finding the mime-type through the standard ServletApi - * ServletContext getMimeType() method. - * - * This is a way to get the content-type via the .extension, - * we could maybe use a magic method as an additional method of - * figuring out the content-type, by looking at the header (first - * few bytes) of the file. (like the file(1) command). We could - * also call the "file" command through Runtime. This is an - * option that I almost prefer as it is already implemented and - * exists with an up-to-date map on most modern Unix like systems. - * I haven't found a really nice implementation of the magic method - * in pure java yet. - * - * The first method we try thought is the "Oreilly method". It - * relies on the content-type that the client browser sends and - * that sometimes is application-octet stream with - * broken/mis-configured browsers. - * - * The map file we use for the extensions is the standard web-app - * deployment descriptor file (web.xml). See Mir's web.xml or see - * your Servlet containers (most likely Tomcat) documentation. - * So if you support a new media type you have to make sure that - * it is in this file -mh - */ - ServletContext ctx = - (ServletContext)MirConfig.getPropAsObject("ServletContext"); - contentType = ctx.getMimeType(fileName); - if (contentType==null) - contentType = "text/plain"; // rfc1867 says this is the default - } - HashMap mediaValues = new HashMap(); - - theLog.printInfo("CONTENT TYPE IS: "+contentType); - - if (contentType.equals("text/plain") || - contentType.equals("application/octet-stream")) { - contentModule.deleteById(cid); - _throwBadContentType(fileName, contentType); - } - - String mediaTitle=(String)withValues.get("media_title"+i); - i++; - - if ((mediaTitle == null) || (mediaTitle.length() == 0)) - throw new ServletModuleUserException("Missing field"); - //mediaTitle = (String)withValues.get("title"); - - mediaValues.put("title", mediaTitle); - mediaValues.put("date", StringUtil.date2webdbDate(new GregorianCalendar())); - mediaValues.put("to_publisher", "1"); // op user - mediaValues.put("to_media_folder", "7"); // op media_folder - mediaValues.put("is_produced", "0"); - mediaValues.put("is_published","0"); - - // @todo this should probably be moved to DatabaseMediaType -mh - String[] cTypeSplit = StringUtil.split(contentType, "/"); - String wc = " mime_type LIKE '"+cTypeSplit[0]+"%'"; - - DatabaseMediaType mediaTypeStor = DatabaseMediaType.getInstance(); - EntityList mediaTypesList = mediaTypeStor.selectByWhereClause(wc); - - String mediaTypeId = null; - MirMedia mediaHandler; - Database mediaStorage; - ProducerMedia mediaProducer; - - //if we didn't find an entry matching the - //content-type int the table. - if (mediaTypesList.size() == 0) { - contentModule.deleteById(cid); - _throwBadContentType(fileName, contentType); - } - - Entity mediaType = null; - Entity mediaType2 = null; - - // find out if we an exact content-type match if so take it. - // otherwise try to match majortype/* - // @todo this should probably be moved to DatabaseMediaType -mh - for(int j=0;j Integer.parseInt(maxMedia)) { + numOfMedia = maxMedia; + } + + int mediaNum = Integer.parseInt(numOfMedia); + SimpleList mediaFields = new SimpleList(); + for(int i =0; i