ossiejhmoore icon

Exporting Module as Single DMP File Per Object

ossiejhmoore | PRO | 08/20/12 09:16:14 PM UTC | 0 ⭐ | 413 👁️ | Never ⏰ | []
text |

3.3 KB

|

None

|

0 👍

/

0 👎

BELOW IS WHAT I DID TO ***EXPERIMENTALLY*** EXPORT A OSCRIPT MODULE AS A COLLECTION OF DUMP
FILES (ONE FOR EACH OSPACE OBJECT) RATHER THAN A SINGLE MONOLITHIC DUMP FILE.
 You can view the Viemo video https://vimeo.com/47891950 to watch a demo of this very crude proof-of-concept quality code.
  1. Created new Child 'OSUtils' under "[my module] Root"
2. Copied "Builder Root:Builder Utils" features "NewOSpaceStetup","SystemFeatures","ExportOspace" 
3. Created Integer fCounter, setting initial value to 10000
4. Created Dynamic fDmpFile, leaving Undefined
5. Edited ExportOspace to write a new .dmp file for each object by doing this:
 Note: I am not posting the source for my modified ExportOspace method because I did not write the original method and don't want to post code I did not write. However, below is a unified diff showing the changes I made.
 --- E:/csapps/opentext/module/aabmod_1_0_1/src/ExportOspace_original.txt
+++ E:/csapps/opentext/module/aabmod_1_0_1/src/ExportOspace_modified.txt
@@ -22,6 +22,7 @@
 	dynamic	f
 	object	x
 +	.fCounter = 10000
  	if OS.IsObject( starthere )
 		root = starthere
@@ -34,6 +35,7 @@
 	else
 		outfile = File.StringToFile( filename )
 	end
+	.fDmpFile = outfile
  	$cancelled = false
 @@ -81,6 +83,7 @@
 		Dialog.Close( $progress )
  		$outputFile = undefined
+		.fCounter = 10000
 	end
 end
 @@ -99,6 +102,10 @@
   function void PrintObject( object o )
+	File    outputFile = $outputFile
+	File    myFile = .GetFileFor(o)
+	$outputFile = myFile
+	File.Open( $outputFile, "w" )
 	object	obj
 	boolean	featureSet	
 	string	featureName
@@ -173,6 +180,8 @@
 			break
 		end
 	end
+	File.Close(myFile)
+	$outputFile = outputFile
 end
 6. Created GetFileFor method as follows:
 function File GetFileFor(Object o)
	.fCounter += 1
	String s = Str.Format("%1_%2_%3.dmp", File.FileToString(.fDmpFile), .fCounter, o.osName)
	File f = File.StringToFile(s)
	return f
end
 7. Created RebuildDmpFile method as:
 function File RebuildDmpFile(File dmpfile)
  	String name = File.GetName(dmpFile)
	String tmpname = Str.Format("%1.tmp", name)
	String dir = File.GetPath(dmpFile)
	File fTmpFile = File.StringToFile(Str.Format("%1%2%3", dir, File.Separator(), tmpname))
	File.Delete(fTmpFile)
	File.Open(fTmpFile, File.WriteMode)
	File fRead
 	List   lFiles
	String msg, sFile, line
 	msg = Str.Format("Reassemble %1.* into %2", name, tmpname)
	echo(msg)
 	lFiles = List.Sort(File.FileList(dir))
	for sFile in lFiles
		if (sFile != File.FileToString(fTmpFile))
			if (Str.Locate(sFile, File.FileToString(dmpfile)) == 1)
				echo("	Processing ", sFile)
				fRead = File.Open( sFile, File.ReadMode )
  				for (	line = File.Read(fRead) ; \
						line != File.E_Eof      ; \
						line = File.Read(fRead)   )
 					File.Write(fTmpFile, line)
 				end
				File.Close(fRead)
			end
		end
	end 
 	File.Close(fTmpFile)
	return fTmpFile
 end
 8. Wrote _test_export function as follows:
 function _test_export()
	.ExportOSpace(Undefined, OS.Root('aabmod'))
end
 9. Wrote _test_reconstruct function as follows:
 function _test_reconstruct()
	File dmp = File.StringToFile("E:\csapps\opentext\module\aabmod_1_0_1\src\aabmod.dmp")
	File tmp = .RebuildDmpFile(dmp)
	echo("Ok, import " , File.FileToString(tmp))
end

Comments