xref: /AOO41X/test/testuno/source/fvt/uno/sw/DocumentTest.java (revision eba4d44a33e5be0b2528d5a9a6f0dcbf65adaa0d)
1*eba4d44aSLiu Zhe package fvt.uno.sw;
2*eba4d44aSLiu Zhe 
3*eba4d44aSLiu Zhe import static org.openoffice.test.common.Testspace.*;
4*eba4d44aSLiu Zhe 
5*eba4d44aSLiu Zhe import java.io.File;
6*eba4d44aSLiu Zhe 
7*eba4d44aSLiu Zhe import org.junit.After;
8*eba4d44aSLiu Zhe import org.junit.Before;
9*eba4d44aSLiu Zhe import org.junit.Test;
10*eba4d44aSLiu Zhe import org.junit.Assert;
11*eba4d44aSLiu Zhe import org.openoffice.test.common.FileUtil;
12*eba4d44aSLiu Zhe import org.openoffice.test.uno.UnoApp;
13*eba4d44aSLiu Zhe 
14*eba4d44aSLiu Zhe import com.sun.star.text.XTextDocument;
15*eba4d44aSLiu Zhe import com.sun.star.text.XTextCursor;
16*eba4d44aSLiu Zhe import com.sun.star.text.XText;
17*eba4d44aSLiu Zhe import com.sun.star.beans.XPropertySet;
18*eba4d44aSLiu Zhe import com.sun.star.beans.PropertyValue;
19*eba4d44aSLiu Zhe import com.sun.star.frame.*;
20*eba4d44aSLiu Zhe import com.sun.star.uno.UnoRuntime;
21*eba4d44aSLiu Zhe import com.sun.star.util.XCloseable;
22*eba4d44aSLiu Zhe import com.sun.star.lang.XComponent;
23*eba4d44aSLiu Zhe import com.sun.star.container.XEnumerationAccess;
24*eba4d44aSLiu Zhe import com.sun.star.container.XEnumeration;
25*eba4d44aSLiu Zhe 
26*eba4d44aSLiu Zhe 
27*eba4d44aSLiu Zhe public class DocumentTest {
28*eba4d44aSLiu Zhe 	UnoApp unoApp = new UnoApp();
29*eba4d44aSLiu Zhe 	XTextDocument textDocument = null;
30*eba4d44aSLiu Zhe 	File temp = null;
31*eba4d44aSLiu Zhe 	String workingFilePath = "";
32*eba4d44aSLiu Zhe 	String workingTemplatePath = "";
33*eba4d44aSLiu Zhe 
34*eba4d44aSLiu Zhe 	/**
35*eba4d44aSLiu Zhe 	 * @throws java.lang.Exception
36*eba4d44aSLiu Zhe 	 */
37*eba4d44aSLiu Zhe 	@Before
38*eba4d44aSLiu Zhe 	public void setUp() throws Exception {
39*eba4d44aSLiu Zhe 		unoApp.start();
40*eba4d44aSLiu Zhe 
41*eba4d44aSLiu Zhe 		FileUtil.deleteFile(getPath("temp"));
42*eba4d44aSLiu Zhe 		temp = new File(getPath("temp"));
43*eba4d44aSLiu Zhe 		temp.mkdirs();
44*eba4d44aSLiu Zhe 
45*eba4d44aSLiu Zhe 		//copy sample file to temp folder
46*eba4d44aSLiu Zhe 		workingFilePath = prepareData("uno/sw/DocumentTest.odt");
47*eba4d44aSLiu Zhe 		workingTemplatePath = prepareData("uno/sw/DocumentTest.ott");
48*eba4d44aSLiu Zhe 	}
49*eba4d44aSLiu Zhe 
50*eba4d44aSLiu Zhe 	@After
51*eba4d44aSLiu Zhe 	public void tearDown() throws Exception {
52*eba4d44aSLiu Zhe 		unoApp.close();
53*eba4d44aSLiu Zhe 	}
54*eba4d44aSLiu Zhe 
55*eba4d44aSLiu Zhe 	private XComponent newDocumentFromTemplate(String templatePath) throws Exception
56*eba4d44aSLiu Zhe 	{
57*eba4d44aSLiu Zhe 		XComponentLoader componentLoader = (XComponentLoader) UnoRuntime.queryInterface(XComponentLoader.class, unoApp.getDesktop());
58*eba4d44aSLiu Zhe 		PropertyValue[] pros = new PropertyValue[1];
59*eba4d44aSLiu Zhe 		pros[0] = new PropertyValue();
60*eba4d44aSLiu Zhe 		pros[0].Name = "AsTemplate";
61*eba4d44aSLiu Zhe 		pros[0].Value = new Boolean(true);
62*eba4d44aSLiu Zhe 
63*eba4d44aSLiu Zhe 		XComponent component = componentLoader.loadComponentFromURL(FileUtil.getUrl(workingTemplatePath), "_blank", 0,pros);
64*eba4d44aSLiu Zhe 		return component;
65*eba4d44aSLiu Zhe 	}
66*eba4d44aSLiu Zhe 
67*eba4d44aSLiu Zhe 
68*eba4d44aSLiu Zhe 	/**
69*eba4d44aSLiu Zhe 	 * test close document
70*eba4d44aSLiu Zhe 	 * @throws Exception
71*eba4d44aSLiu Zhe 	 */
72*eba4d44aSLiu Zhe 	@Test
73*eba4d44aSLiu Zhe 	public void testCloseDocument() throws Exception
74*eba4d44aSLiu Zhe 	{
75*eba4d44aSLiu Zhe 		XComponent component = unoApp.newDocument("swriter");
76*eba4d44aSLiu Zhe 		unoApp.closeDocument(component);
77*eba4d44aSLiu Zhe 		XModel xModel = unoApp.getDesktop().getCurrentFrame().getController().getModel();
78*eba4d44aSLiu Zhe 		Assert.assertTrue("Document has been closed.",xModel==null);
79*eba4d44aSLiu Zhe 	}
80*eba4d44aSLiu Zhe 
81*eba4d44aSLiu Zhe 	/**
82*eba4d44aSLiu Zhe 	 * test new document
83*eba4d44aSLiu Zhe 	 * @throws Exception
84*eba4d44aSLiu Zhe 	 */
85*eba4d44aSLiu Zhe 	@Test
86*eba4d44aSLiu Zhe 	public void testNewDocument() throws Exception
87*eba4d44aSLiu Zhe 	{
88*eba4d44aSLiu Zhe 		XComponentLoader componentLoader = (XComponentLoader) UnoRuntime.queryInterface(XComponentLoader.class, unoApp.getDesktop());
89*eba4d44aSLiu Zhe 		XComponent component = componentLoader.loadComponentFromURL("private:factory/" + "swriter", "_blank", 0, new PropertyValue[0]);
90*eba4d44aSLiu Zhe 		textDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, component);
91*eba4d44aSLiu Zhe 		XTitle xTitle = (XTitle)UnoRuntime.queryInterface(XTitle.class, textDocument);
92*eba4d44aSLiu Zhe 		String title = xTitle.getTitle();
93*eba4d44aSLiu Zhe 		Assert.assertEquals("New Document title start with \"Untitled\"",true, title.startsWith("Untitled"));
94*eba4d44aSLiu Zhe 		unoApp.closeDocument(textDocument);
95*eba4d44aSLiu Zhe 	}
96*eba4d44aSLiu Zhe 
97*eba4d44aSLiu Zhe 	/**
98*eba4d44aSLiu Zhe 	 * test new document from template
99*eba4d44aSLiu Zhe 	 * @throws Exception
100*eba4d44aSLiu Zhe 	 */
101*eba4d44aSLiu Zhe 	@Test
102*eba4d44aSLiu Zhe 	public void testNewDocumentFromTemplate() throws Exception
103*eba4d44aSLiu Zhe 	{
104*eba4d44aSLiu Zhe 		XComponent component = this.newDocumentFromTemplate(workingTemplatePath);
105*eba4d44aSLiu Zhe 		textDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, component);
106*eba4d44aSLiu Zhe 		XText xText = textDocument.getText();
107*eba4d44aSLiu Zhe 		XTitle xTitle = (XTitle)UnoRuntime.queryInterface(XTitle.class, textDocument);
108*eba4d44aSLiu Zhe 		xText = textDocument.getText();
109*eba4d44aSLiu Zhe 		XTextCursor xTextCursor = xText.createTextCursor();
110*eba4d44aSLiu Zhe 		xTextCursor.gotoEnd(true);
111*eba4d44aSLiu Zhe 		XPropertySet xPropertySet = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTextCursor);
112*eba4d44aSLiu Zhe 		String paraStyle = (String)xPropertySet.getPropertyValue("ParaStyleName");
113*eba4d44aSLiu Zhe 
114*eba4d44aSLiu Zhe         Assert.assertEquals("new document from template, heading style in template is remained. ", "Heading 1", paraStyle);
115*eba4d44aSLiu Zhe 
116*eba4d44aSLiu Zhe         Assert.assertEquals("new document from template, title start with \"Untitled\".", true, xTitle.getTitle().startsWith("Untitled"));
117*eba4d44aSLiu Zhe 
118*eba4d44aSLiu Zhe         unoApp.closeDocument(textDocument);
119*eba4d44aSLiu Zhe 	}
120*eba4d44aSLiu Zhe 
121*eba4d44aSLiu Zhe 	/**
122*eba4d44aSLiu Zhe 	 * test save document as odt
123*eba4d44aSLiu Zhe 	 * @throws Exception
124*eba4d44aSLiu Zhe 	 */
125*eba4d44aSLiu Zhe 	@Test
126*eba4d44aSLiu Zhe 	public void testSaveDocument() throws Exception
127*eba4d44aSLiu Zhe 	{
128*eba4d44aSLiu Zhe 		XComponent component = unoApp.loadDocument(workingFilePath);
129*eba4d44aSLiu Zhe 		textDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, component);
130*eba4d44aSLiu Zhe 		XText xText = textDocument.getText();
131*eba4d44aSLiu Zhe 		XTextCursor xTextCursor = xText.createTextCursor();
132*eba4d44aSLiu Zhe 		xTextCursor.gotoEnd(true);
133*eba4d44aSLiu Zhe 		XPropertySet xPropertySet = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTextCursor);
134*eba4d44aSLiu Zhe 
135*eba4d44aSLiu Zhe 		xPropertySet.setPropertyValue("ParaStyleName", "Heading 1");
136*eba4d44aSLiu Zhe 
137*eba4d44aSLiu Zhe 		XStorable xStorable = (XStorable)UnoRuntime.queryInterface(XStorable.class, component);
138*eba4d44aSLiu Zhe         xStorable.store();
139*eba4d44aSLiu Zhe         unoApp.closeDocument(textDocument);
140*eba4d44aSLiu Zhe 
141*eba4d44aSLiu Zhe         component = unoApp.loadDocument(workingFilePath);
142*eba4d44aSLiu Zhe 		textDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, component);
143*eba4d44aSLiu Zhe 		xText = textDocument.getText();
144*eba4d44aSLiu Zhe 		xTextCursor = xText.createTextCursor();
145*eba4d44aSLiu Zhe 		xTextCursor.gotoEnd(true);
146*eba4d44aSLiu Zhe 		xPropertySet = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTextCursor);
147*eba4d44aSLiu Zhe 
148*eba4d44aSLiu Zhe         Assert.assertEquals("Modify plain text to heading 1 style. ", "Heading 1", (String)xPropertySet.getPropertyValue("ParaStyleName"));
149*eba4d44aSLiu Zhe         unoApp.closeDocument(textDocument);
150*eba4d44aSLiu Zhe 	}
151*eba4d44aSLiu Zhe 
152*eba4d44aSLiu Zhe 	/**
153*eba4d44aSLiu Zhe 	 * test save document as doc
154*eba4d44aSLiu Zhe 	 * @throws Exception
155*eba4d44aSLiu Zhe 	 */
156*eba4d44aSLiu Zhe 	@Test
157*eba4d44aSLiu Zhe 	public void testSaveAsDocument() throws Exception
158*eba4d44aSLiu Zhe 	{
159*eba4d44aSLiu Zhe 		File saveAsFile = new File(workingFilePath + ".doc");
160*eba4d44aSLiu Zhe 		XComponent component = unoApp.loadDocument(workingFilePath);
161*eba4d44aSLiu Zhe 		textDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, component);
162*eba4d44aSLiu Zhe 		XText xText = textDocument.getText();
163*eba4d44aSLiu Zhe 		XTextCursor xTextCursor = xText.createTextCursor();
164*eba4d44aSLiu Zhe 		XPropertySet xPropertySet = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTextCursor);
165*eba4d44aSLiu Zhe 
166*eba4d44aSLiu Zhe 		xPropertySet.setPropertyValue("ParaStyleName", "Heading 1");
167*eba4d44aSLiu Zhe 		xText.insertString(xTextCursor, "test Save odt as doc.", false);
168*eba4d44aSLiu Zhe 
169*eba4d44aSLiu Zhe 		XStorable xStorable = (XStorable)UnoRuntime.queryInterface(XStorable.class, component);
170*eba4d44aSLiu Zhe         PropertyValue[] storeProps = new PropertyValue[2];
171*eba4d44aSLiu Zhe 
172*eba4d44aSLiu Zhe         storeProps[0] = new PropertyValue();
173*eba4d44aSLiu Zhe         storeProps[0].Name = "Overwrite";
174*eba4d44aSLiu Zhe         storeProps[0].Value = new Boolean(true);
175*eba4d44aSLiu Zhe 
176*eba4d44aSLiu Zhe         storeProps[1] = new PropertyValue();
177*eba4d44aSLiu Zhe         storeProps[1].Name = "FilterName";
178*eba4d44aSLiu Zhe         storeProps[1].Value = "MS Word 97";
179*eba4d44aSLiu Zhe 
180*eba4d44aSLiu Zhe         xStorable.storeAsURL(FileUtil.getUrl(saveAsFile), storeProps);
181*eba4d44aSLiu Zhe         Assert.assertTrue("Save odt document as doc the file exist: " + saveAsFile.getAbsolutePath(), saveAsFile.exists());
182*eba4d44aSLiu Zhe         unoApp.closeDocument(textDocument);
183*eba4d44aSLiu Zhe 	}
184*eba4d44aSLiu Zhe 
185*eba4d44aSLiu Zhe 	/**
186*eba4d44aSLiu Zhe 	 * test export document as pdf
187*eba4d44aSLiu Zhe 	 * @throws Exception
188*eba4d44aSLiu Zhe 	 */
189*eba4d44aSLiu Zhe 	@Test
190*eba4d44aSLiu Zhe 	public void testExportAsPDF() throws Exception
191*eba4d44aSLiu Zhe 	{
192*eba4d44aSLiu Zhe 		File saveAsFile = new File(workingFilePath + ".pdf");
193*eba4d44aSLiu Zhe 		XComponent component = unoApp.loadDocument(workingFilePath);
194*eba4d44aSLiu Zhe 		textDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, component);
195*eba4d44aSLiu Zhe 
196*eba4d44aSLiu Zhe 		XStorable xStorable = (XStorable)UnoRuntime.queryInterface(XStorable.class, component);
197*eba4d44aSLiu Zhe         PropertyValue[] storeProps = new PropertyValue[3];
198*eba4d44aSLiu Zhe 
199*eba4d44aSLiu Zhe         storeProps[0] = new PropertyValue();
200*eba4d44aSLiu Zhe         storeProps[0].Name = "Overwrite";
201*eba4d44aSLiu Zhe         storeProps[0].Value = new Boolean(true);
202*eba4d44aSLiu Zhe 
203*eba4d44aSLiu Zhe         storeProps[1] = new PropertyValue();
204*eba4d44aSLiu Zhe         storeProps[1].Name = "FilterName";
205*eba4d44aSLiu Zhe         storeProps[1].Value = "writer_pdf_Export";
206*eba4d44aSLiu Zhe 
207*eba4d44aSLiu Zhe         storeProps[2] = new PropertyValue();
208*eba4d44aSLiu Zhe         storeProps[2].Name = "CompressionMode";
209*eba4d44aSLiu Zhe         storeProps[2].Value = "1";
210*eba4d44aSLiu Zhe 
211*eba4d44aSLiu Zhe         xStorable.storeToURL(FileUtil.getUrl(saveAsFile), storeProps);
212*eba4d44aSLiu Zhe 
213*eba4d44aSLiu Zhe         Assert.assertTrue("Export document as PDF.", saveAsFile.exists());
214*eba4d44aSLiu Zhe 
215*eba4d44aSLiu Zhe         unoApp.closeDocument(textDocument);
216*eba4d44aSLiu Zhe 	}
217*eba4d44aSLiu Zhe 
218*eba4d44aSLiu Zhe 	/**
219*eba4d44aSLiu Zhe 	 * test save document as template
220*eba4d44aSLiu Zhe 	 * @throws Exception
221*eba4d44aSLiu Zhe 	 */
222*eba4d44aSLiu Zhe 	@Test
223*eba4d44aSLiu Zhe 	public void testSaveAsTemplate() throws Exception
224*eba4d44aSLiu Zhe 	{
225*eba4d44aSLiu Zhe 		File saveAsFile = new File(workingFilePath + ".ott");
226*eba4d44aSLiu Zhe 		XComponent component = unoApp.loadDocument(workingFilePath);
227*eba4d44aSLiu Zhe 		textDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, component);
228*eba4d44aSLiu Zhe 		XText xText = textDocument.getText();
229*eba4d44aSLiu Zhe 		XTextCursor xTextCursor = xText.createTextCursor();
230*eba4d44aSLiu Zhe 		xTextCursor.gotoEnd(true);
231*eba4d44aSLiu Zhe 		XPropertySet xPropertySet = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTextCursor);
232*eba4d44aSLiu Zhe 
233*eba4d44aSLiu Zhe 		xPropertySet.setPropertyValue("ParaStyleName", "Heading 1");
234*eba4d44aSLiu Zhe 
235*eba4d44aSLiu Zhe 		XStorable xStorable = (XStorable)UnoRuntime.queryInterface(XStorable.class, component);
236*eba4d44aSLiu Zhe         xStorable.store();
237*eba4d44aSLiu Zhe 
238*eba4d44aSLiu Zhe 		PropertyValue[] storeProps = new PropertyValue[3];
239*eba4d44aSLiu Zhe 		storeProps[0] = new PropertyValue();
240*eba4d44aSLiu Zhe 		storeProps[0].Name="TemplateName";
241*eba4d44aSLiu Zhe 		storeProps[0].Value="MyNewCreatedTemplate";
242*eba4d44aSLiu Zhe 
243*eba4d44aSLiu Zhe 		storeProps[1] = new PropertyValue();
244*eba4d44aSLiu Zhe 		storeProps[1].Name="TemplateRegionName";
245*eba4d44aSLiu Zhe 		storeProps[1].Value="My Templates";
246*eba4d44aSLiu Zhe 
247*eba4d44aSLiu Zhe 		storeProps[2] = new PropertyValue();
248*eba4d44aSLiu Zhe 		storeProps[2].Name="AsTemplate";
249*eba4d44aSLiu Zhe 		storeProps[2].Value=new Boolean(true);
250*eba4d44aSLiu Zhe 
251*eba4d44aSLiu Zhe 		xStorable.storeToURL(FileUtil.getUrl(saveAsFile), storeProps);
252*eba4d44aSLiu Zhe 		unoApp.closeDocument(textDocument);
253*eba4d44aSLiu Zhe 
254*eba4d44aSLiu Zhe 		component = this.newDocumentFromTemplate(saveAsFile.getAbsolutePath());
255*eba4d44aSLiu Zhe 		textDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, component);
256*eba4d44aSLiu Zhe 		XTitle xTitle = (XTitle)UnoRuntime.queryInterface(XTitle.class, textDocument);
257*eba4d44aSLiu Zhe 		xText = textDocument.getText();
258*eba4d44aSLiu Zhe 		xTextCursor = xText.createTextCursor();
259*eba4d44aSLiu Zhe 		xTextCursor.gotoEnd(true);
260*eba4d44aSLiu Zhe 		xPropertySet = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTextCursor);
261*eba4d44aSLiu Zhe 		String paraStyle = (String)xPropertySet.getPropertyValue("ParaStyleName");
262*eba4d44aSLiu Zhe 		Assert.assertEquals("Save document as template, heading style is remained. ", "Heading 1", paraStyle);
263*eba4d44aSLiu Zhe         Assert.assertEquals("Save document as template, title start with \"Untitled\".", true, xTitle.getTitle().startsWith("Untitled"));
264*eba4d44aSLiu Zhe         unoApp.closeDocument(textDocument);
265*eba4d44aSLiu Zhe 	}
266*eba4d44aSLiu Zhe 
267*eba4d44aSLiu Zhe }
268