[OPENMEETINGS-1030] more work of files section: wml drop

git-svn-id: https://svn.apache.org/repos/asf/openmeetings/application/trunk@1753640 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryChartLoader.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryChartLoader.java
index cf59fce..2065aa1 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryChartLoader.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryChartLoader.java
@@ -35,7 +35,7 @@
 import com.thoughtworks.xstream.io.xml.XppDriver;
 
 public class LibraryChartLoader {
-	private static final Logger log = Red5LoggerFactory.getLogger(LibraryWmlLoader.class, webAppRootKey);
+	private static final Logger log = Red5LoggerFactory.getLogger(LibraryChartLoader.class, webAppRootKey);
 
     private static final String fileExt = ".xchart";
 
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryDocumentConverter.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryDocumentConverter.java
index 6df9f17..47c7b49 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryDocumentConverter.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryDocumentConverter.java
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.core.documents;
 
+import static org.apache.openmeetings.util.OmFileHelper.WML_EXTENSION;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
 import java.io.File;
@@ -38,13 +39,11 @@
 public class LibraryDocumentConverter {
 	private static final Logger log = Red5LoggerFactory.getLogger(LibraryDocumentConverter.class, webAppRootKey);
 	
-	private static final String fileExt = ".wml";
-	
 	public static String writeToLocalFolder(String fileName, @SuppressWarnings("rawtypes")ArrayList objList) {
 		try {
 			log.debug("filePath: " + OmFileHelper.getUploadWmlDir().getCanonicalPath());
 			
-			File file = new File(OmFileHelper.getUploadWmlDir(), fileName + fileExt);
+			File file = new File(OmFileHelper.getUploadWmlDir(), fileName + WML_EXTENSION);
 			
 			if (file.exists()){
 				return "-20";
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryWmlLoader.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryWmlLoader.java
index 0ab9142..4970738 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryWmlLoader.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryWmlLoader.java
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.core.documents;
 
+import static org.apache.openmeetings.util.OmFileHelper.WML_EXTENSION;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
 import java.io.BufferedReader;
@@ -27,11 +28,9 @@
 import java.io.InputStreamReader;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
+import java.util.List;
 
 import org.apache.openmeetings.util.OmFileHelper;
-import org.dom4j.Element;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 
@@ -40,14 +39,12 @@
 
 public class LibraryWmlLoader {
 	private static final Logger log = Red5LoggerFactory.getLogger(LibraryWmlLoader.class, webAppRootKey);
-	private static final String fileExt = ".wml";
 	
-	@SuppressWarnings({ "rawtypes" })
-	public ArrayList loadWmlFile(String fileName){
+	public static List<?> loadWmlFile(String fileName){
 		try {
 			String name = fileName;
-			if (!name.endsWith(fileExt)) {
-				name += fileExt;
+			if (!name.endsWith(WML_EXTENSION)) {
+				name += WML_EXTENSION;
 			}
 			File file = new File(OmFileHelper.getUploadWmlDir(), name);
 			log.debug("filepathComplete: " + file);
@@ -58,7 +55,7 @@
 			try (InputStream is = new FileInputStream(file);
 					BufferedReader reader = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8)))
 			{
-				ArrayList lMapList = (ArrayList) xStream.fromXML(reader);
+				List<?> lMapList = (List<?>) xStream.fromXML(reader);
 				
 				return lMapList;
 			}
@@ -66,185 +63,6 @@
 			log.error("loadWmlFile",err);
 		}
 		
-		return null;
+		return new ArrayList<>();
 	}
-	
-	/**
-	 * @deprecated
-	 * @param paintElement
-	 * @param subMap
-	 */
-	@SuppressWarnings({ "unused", "rawtypes" })
-	private static void createListObjectPaintByNode(Element paintElement, LinkedHashMap<Integer,Object> subMap){
-		try {
-			
-			LinkedHashMap<Integer,LinkedHashMap> pointMap = new LinkedHashMap<Integer,LinkedHashMap>();
-			Element pointElements = paintElement.element("points");
-			Integer k = 0;
-			
-			for ( Iterator i = pointElements.elementIterator( "point" ); i.hasNext(); ) {
-				Element pointElement = (Element) i.next();
-				LinkedHashMap<Integer,Object> singlePoint = new LinkedHashMap<Integer,Object>();
-				singlePoint.put(0, pointElement.getName());
-				singlePoint.put(1, Integer.valueOf(pointElement.attribute("val1").getText()));
-				singlePoint.put(2, Integer.valueOf(pointElement.attribute("val2").getText()));
-				singlePoint.put(3, Integer.valueOf(pointElement.attribute("val3").getText()));
-				singlePoint.put(4, Integer.valueOf(pointElement.attribute("val4").getText()));
-				pointMap.put(k, singlePoint);
-				log.debug("createListObjectPaintByNode"+singlePoint);
-				k++;
-			}
-			subMap.put(1, pointMap);
-
-			subMap.put(2, paintElement.element("fillstyle").getText());
-			subMap.put(3, Integer.valueOf(paintElement.element("linewidth").getText()));
-			subMap.put(4, Integer.valueOf(paintElement.element("strokestyle").getText()));
-			subMap.put(5, Integer.valueOf(paintElement.element("counter").getText()));
-			subMap.put(6, Float.valueOf(paintElement.element("x").getText()));
-			subMap.put(7, Float.valueOf(paintElement.element("y").getText()));
-			subMap.put(8, Float.valueOf(paintElement.element("width").getText()));
-			subMap.put(9, Float.valueOf(paintElement.element("height").getText()));
-			subMap.put(10, paintElement.element("layername").getText());		
-			
-		} catch (Exception err) {
-			log.error("createListObjectPaintByNode",err);
-		}
-	}
-	
-	/**
-	 * @deprecated
-	 * @param paintElement
-	 * @param subMap
-	 */
-	public void createListObjectLetterByNode(Element paintElement, LinkedHashMap<Integer,Object> subMap){
-		try {
-
-			subMap.put(1, paintElement.element("textforfield").getText());
-			subMap.put(2, Integer.valueOf(paintElement.element("fgcolor").getText()));
-			subMap.put(3, Integer.valueOf(paintElement.element("fontsize").getText()));
-			subMap.put(4, paintElement.element("fontstyle").getText());
-			subMap.put(5, Integer.valueOf(paintElement.element("counter").getText()));
-			subMap.put(6, Float.valueOf(paintElement.element("x").getText()));
-			subMap.put(7, Float.valueOf(paintElement.element("y").getText()));			
-			subMap.put(8, Float.valueOf(paintElement.element("width").getText()));		
-			subMap.put(9, Float.valueOf(paintElement.element("height").getText()));		
-			subMap.put(10, paintElement.element("layername").getText());
-			
-		} catch (Exception err) {
-			log.error("createListObjectLetterByNode",err);
-		}
-	}	
-	
-	/**
-	 * @deprecated
-	 * @param paintElement
-	 * @param subMap
-	 */
-	public void createListObjectImageByNode(Element paintElement, LinkedHashMap<Integer,Object> subMap){
-		try {
-
-			subMap.put(1, paintElement.element("urlname").getText());
-			subMap.put(2, paintElement.element("baseurl").getText());
-			subMap.put(3, paintElement.element("filename").getText());
-			subMap.put(4, paintElement.element("modulename").getText());
-			subMap.put(5, paintElement.element("parentpath").getText());
-			subMap.put(6, paintElement.element("room").getText());
-			subMap.put(7, paintElement.element("domain").getText());
-			subMap.put(8, Integer.valueOf(paintElement.element("counter").getText()));
-			subMap.put(9, Float.valueOf(paintElement.element("x").getText()));
-			subMap.put(10, Float.valueOf(paintElement.element("y").getText()));
-			subMap.put(11, Float.valueOf(paintElement.element("width").getText()));
-			subMap.put(12, Float.valueOf(paintElement.element("height").getText()));
-			subMap.put(13, paintElement.element("layername").getText());		
-			
-		} catch (Exception err) {
-			log.error("createListObjectImageByNode",err);
-		}
-	}	
-	
-	/**
-	 * @deprecated
-	 * @param paintElement
-	 * @param subMap
-	 */
-	public void createListObjectObjecByNode(Element paintElement, LinkedHashMap<Integer,Object> subMap){
-		try {	
-			
-			subMap.put(1, paintElement.element("fillstyle").getText());
-			subMap.put(2, paintElement.element("linewidth").getText());
-			subMap.put(3, Integer.valueOf(paintElement.element("strokestyle").getText()));
-			subMap.put(4, Float.valueOf(paintElement.element("startx").getText()));
-			subMap.put(5, Float.valueOf(paintElement.element("starty").getText()));
-			subMap.put(6, Float.valueOf(paintElement.element("endx").getText()));
-			subMap.put(7, Float.valueOf(paintElement.element("endy").getText()));
-			subMap.put(8, Integer.valueOf(paintElement.element("counter").getText()));
-			subMap.put(9, Float.valueOf(paintElement.element("x").getText()));
-			subMap.put(10, Float.valueOf(paintElement.element("y").getText()));
-			subMap.put(11, Float.valueOf(paintElement.element("width").getText()));
-			subMap.put(12, Float.valueOf(paintElement.element("height").getText()));
-			subMap.put(13, paintElement.element("layername").getText());
-			
-		} catch (Exception err) {
-			log.error("createListObjectObjecByNode",err);
-		}
-	}		
-	
-	/**
-	 * @deprecated
-	 * @param paintElement
-	 * @param subMap
-	 */
-	public void createListObjectRectAndEllipseByNode(Element paintElement, LinkedHashMap<Integer,Object> subMap){
-		try {	
-			
-			subMap.put(1, Integer.valueOf(paintElement.element("stroke").getText()));
-			subMap.put(2, paintElement.element("line").getText());
-			subMap.put(3, Integer.valueOf(paintElement.element("counter").getText()));
-			subMap.put(4, Float.valueOf(paintElement.element("x").getText()));		
-			subMap.put(5, Float.valueOf(paintElement.element("y").getText()));
-			subMap.put(6, Float.valueOf(paintElement.element("width").getText()));
-			subMap.put(7, Float.valueOf(paintElement.element("height").getText()));
-			subMap.put(8, paintElement.element("layername").getText());
-
-		} catch (Exception err) {
-			log.error("createListObjectObjecByNode",err);
-		}
-	}
-	
-	/**
-	 * @deprecated
-	 * @param paintElement
-	 * @param subMap
-	 */
-	public void createListObjectSWFByNode(Element paintElement, LinkedHashMap<Integer,Object> subMap){
-		try {
-
-			subMap.put(1, paintElement.element("urlname").getText());
-			subMap.put(2, paintElement.element("baseurl").getText());
-			subMap.put(3, paintElement.element("filename").getText());
-			subMap.put(4, paintElement.element("modulename").getText());
-			subMap.put(5, paintElement.element("parentpath").getText());
-			subMap.put(6, paintElement.element("room").getText());
-			subMap.put(7, paintElement.element("domain").getText());
-			subMap.put(8, Integer.valueOf(paintElement.element("slideNumber").getText()));
-			subMap.put(9, Float.valueOf(paintElement.element("innerx").getText()));
-			subMap.put(10, Float.valueOf(paintElement.element("innery").getText()));
-			subMap.put(11, Float.valueOf(paintElement.element("innerwidth").getText()));
-			subMap.put(12, Float.valueOf(paintElement.element("innerheight").getText()));
-			subMap.put(13, Integer.valueOf(paintElement.element("zoomlevel").getText()));
-			subMap.put(14, Float.valueOf(paintElement.element("initwidth").getText()));
-			subMap.put(15, Float.valueOf(paintElement.element("initheight").getText()));
-			subMap.put(16, Integer.valueOf(paintElement.element("currentzoom").getText()));
-			subMap.put(17, Integer.valueOf(paintElement.element("counter").getText()));
-			subMap.put(18, Float.valueOf(paintElement.element("x").getText()));
-			subMap.put(19, Float.valueOf(paintElement.element("y").getText()));
-			subMap.put(20, Float.valueOf(paintElement.element("width").getText()));
-			subMap.put(21, Float.valueOf(paintElement.element("height").getText()));
-			subMap.put(22, paintElement.element("layername").getText());		
-			
-		} catch (Exception err) {
-			log.error("createListObjectImageByNode",err);
-		}
-	}		
-	
 }
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java
index 59bc84e..63be9f2 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java
@@ -24,6 +24,7 @@
 import java.io.File;
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import org.apache.commons.transaction.util.FileHelper;
@@ -32,12 +33,14 @@
 import org.apache.openmeetings.core.documents.LibraryDocumentConverter;
 import org.apache.openmeetings.core.documents.LibraryWmlLoader;
 import org.apache.openmeetings.core.documents.LoadLibraryPresentation;
+import org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter;
 import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
 import org.apache.openmeetings.db.dao.server.ISessionManager;
 import org.apache.openmeetings.db.dao.server.SessiondataDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.dto.file.LibraryPresentation;
 import org.apache.openmeetings.db.entity.file.FileExplorerItem;
+import org.apache.openmeetings.db.entity.file.FileItem;
 import org.apache.openmeetings.db.entity.file.FileItem.Type;
 import org.apache.openmeetings.db.entity.room.Client;
 import org.apache.openmeetings.db.util.AuthLevelUtil;
@@ -47,7 +50,6 @@
 import org.red5.server.api.Red5;
 import org.red5.server.api.service.IPendingServiceCall;
 import org.red5.server.api.service.IPendingServiceCallback;
-import org.red5.server.api.service.IServiceCapableConnection;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 
@@ -68,9 +70,9 @@
 	@Autowired
 	private FileExplorerItemDao fileDao;
 	@Autowired
-	private LibraryWmlLoader libraryWmlLoader;
-	@Autowired
 	private WhiteboardManager whiteboardManagement;
+	@Autowired
+	private ScopeApplicationAdapter scopeAdapter;
 
 	public LibraryPresentation getPresentationPreviewFileExplorer(String SID, String parentFolder) {
 		try {
@@ -134,73 +136,45 @@
 	}
 
 	/**
-	 * 
 	 * Loads a Object from the library into the whiteboard of all participant of
 	 * the current room
 	 * 
-	 * @param SID
-	 * @param room_id
-	 * @param fileId
-	 * @param whiteboardId
+	 * @param uid - uid of the client performing operation
+	 * @param wbId - id of whiteboard
+	 * @param fi - FileItem of the Wml being loaded
 	 */
-	@SuppressWarnings({ "rawtypes", "unchecked" })
-	public void loadWmlObject(String SID, Long room_id, Long fileId, Long whiteboardId) {
-		try {
-			Long users_id = sessiondataDao.check(SID);
+	public void sendToWhiteboard(String uid, Long wbId, FileItem fi) {
+		Client client = sessionManager.getClientByPublicSIDAnyServer(uid).getRcl();
 
-			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
-				IConnection current = Red5.getConnectionLocal();
-				Client currentClient = sessionManager.getClientByStreamId(current.getClient().getId(), null);
-
-				if (currentClient == null) {
-					return;
-				}
-
-				FileExplorerItem fileExplorerItem = fileDao.get(fileId);
-				if (fileExplorerItem == null) {
-					log.warn("[loadWmlObject] Unable to load Wml file by Id {}", fileId);
-					return;
-				}
-
-				ArrayList roomItems = libraryWmlLoader.loadWmlFile(fileExplorerItem.getHash());
-
-				Map whiteboardObjClear = new HashMap();
-				whiteboardObjClear.put(2, "clear");
-				whiteboardObjClear.put(3, null);
-
-				whiteboardManagement.addWhiteBoardObjectById(room_id, whiteboardObjClear, whiteboardId);
-
-				for (int k = 0; k < roomItems.size(); k++) {
-					ArrayList actionObject = (ArrayList)roomItems.get(k);
-
-					Map whiteboardObj = new HashMap();
-					whiteboardObj.put(2, "draw");
-					whiteboardObj.put(3, actionObject);
-
-					whiteboardManagement.addWhiteBoardObjectById(room_id, whiteboardObj, whiteboardId);
-				}
-
-				Map<String, Object> sendObject = new HashMap<String, Object>();
-				sendObject.put("id", whiteboardId);
-				sendObject.put("roomitems", roomItems);
-
-				// Notify all Clients of that Scope (Room)
-				for (IConnection conn : current.getScope().getClientConnections()) {
-					if (conn != null) {
-						if (conn instanceof IServiceCapableConnection) {
-							Client rcl = sessionManager.getClientByStreamId(conn.getClient().getId(), null);
-							if ((rcl == null) || rcl.isScreenClient()) {
-								continue;
-							} else {
-								((IServiceCapableConnection) conn).invoke("loadWmlToWhiteboardById", new Object[] { sendObject }, this);
-							}
-						}
-					}
-				}
-			}
-		} catch (Exception err) {
-			log.error("[loadWmlObject] ", err);
+		if (client == null) {
+			log.warn("No client was found to send Wml:: {}", uid);
+			return;
 		}
+
+		List<?> roomItems = LibraryWmlLoader.loadWmlFile(fi.getHash());
+
+		Map<Integer, String> wbClear = new HashMap<>();
+		wbClear.put(2, "clear");
+		wbClear.put(3, null);
+
+		Long roomId = client.getRoomId();
+		whiteboardManagement.addWhiteBoardObjectById(roomId, wbClear, wbId);
+
+		for (int k = 0; k < roomItems.size(); k++) {
+			List<?> actionObject = (List<?>)roomItems.get(k);
+
+			Map<Integer, Object> whiteboardObj = new HashMap<>();
+			whiteboardObj.put(2, "draw");
+			whiteboardObj.put(3, actionObject);
+
+			whiteboardManagement.addWhiteBoardObjectById(roomId, whiteboardObj, wbId);
+		}
+
+		Map<String, Object> sendObject = new HashMap<String, Object>();
+		sendObject.put("id", wbId);
+		sendObject.put("roomitems", roomItems);
+
+		scopeAdapter.sendToScope(roomId, "loadWmlToWhiteboardById", sendObject);
 	}
 
 	/**
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
index 8dab317..bb57c19 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
@@ -1471,7 +1471,7 @@
 
 			boolean showDrawStatus = getWhiteboardDrawStatus();
 
-			sendToScope(roomId, "sendVarsToWhiteboardById", new Object[]{showDrawStatus ? client : null, sendObject});
+			sendToScope(roomId, "sendVarsToWhiteboardById", new Object[] { showDrawStatus ? client : null, sendObject });
 		} catch (Exception err) {
 			log.error("[sendToWhiteboard]", err);
 			return -1;
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
index 7dc583e..506d119 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
@@ -70,6 +70,7 @@
 	public static final String profileImagePrefix = "_profile_";

 	public static final String thumbImagePrefix = "_thumb_";

 	public static final String dashboardFile = "dashboard.xml";

+	public static final String WML_EXTENSION = ".wml";

 	public static final String FLV_EXTENSION = ".flv";

 	public static final String MP4_EXTENSION = ".mp4";

 	public static final String OGG_EXTENSION = ".ogg";

diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml b/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
index f5ba24a..3a22f0a 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
@@ -239,7 +239,6 @@
 	<bean id="generatePDF" class="org.apache.openmeetings.core.documents.GeneratePDF" />
 	<bean id="smsHandler" class="org.apache.openmeetings.core.mail.SMSHandler" />
 	<bean id="importInitvalues" class="org.apache.openmeetings.installation.ImportInitvalues" />
-	<bean id="libraryWmlLoader" class="org.apache.openmeetings.core.documents.LibraryWmlLoader" />
 	<bean id="generateSWF" class="org.apache.openmeetings.core.converter.GenerateSWF" />
 	<bean id="fileUtils" class="org.apache.openmeetings.core.data.file.FileUtils" />
 	<bean id="ldapLoginManagement" class="org.apache.openmeetings.core.ldap.LdapLoginManagement" />
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/library/TestFileParser.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/library/TestFileParser.java
index b40045e..a28bd25 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/library/TestFileParser.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/library/TestFileParser.java
@@ -25,20 +25,16 @@
 import org.junit.Test;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
 
 public class TestFileParser extends AbstractJUnitDefaults {
 	private static final Logger log = Red5LoggerFactory.getLogger(TestFileParser.class, webAppRootKey);
 
-	@Autowired
-	private LibraryWmlLoader libraryWmlLoader;
-	
 	@Test
 	public void testLoadWmlFile(){
 		
 		try {
 			
-			libraryWmlLoader.loadWmlFile("filename1");
+			LibraryWmlLoader.loadWmlFile("filename1");
 			
 		} catch (Exception err) {