Skip to content

Commit 60702ff

Browse files
Merge pull request #31 from PhilippSalvisberg/develop
"Delete existing files" preference
2 parents 0eb60b3 + 8f1df40 commit 60702ff

File tree

9 files changed

+66
-31
lines changed

9 files changed

+66
-31
lines changed

sqldev/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<!-- The Basics -->
66
<groupId>org.utplsql</groupId>
77
<artifactId>org.utplsql.sqldev</artifactId>
8-
<version>0.4.0-SNASHOT</version>
8+
<version>0.4.0</version>
99
<packaging>bundle</packaging>
1010
<properties>
1111
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

sqldev/src/main/java/org/utplsql/sqldev/PreferencePanel.xtend

+6
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ class PreferencePanel extends DefaultTraversablePanel {
5656
val JCheckBox generateFilesCheckBox = new JCheckBox
5757
val JTextField outputDirectoryTextField = new JTextField
5858
val JButton outputDirectoryBrowse = new JButton();
59+
val JCheckBox deleteExistingFilesCheckBox = new JCheckBox
5960

6061
new() {
6162
layoutControls()
@@ -129,6 +130,9 @@ class PreferencePanel extends DefaultTraversablePanel {
129130
b3.add(
130131
b3.field.label.withText(UtplsqlResources.getString("PREF_OUTPUT_DIRECTORY_LABEL")).component(
131132
outputDirectoryTextField).button(outputDirectoryBrowse).withText("Bro&wse"))
133+
b3.add(
134+
b3.field.label.withText(UtplsqlResources.getString("PREF_DELETE_EXISTING_FILES_LABEL")).component(
135+
deleteExistingFilesCheckBox))
132136

133137
// putting everything together
134138
val FieldLayoutBuilder builder = new FieldLayoutBuilder(this)
@@ -167,6 +171,7 @@ class PreferencePanel extends DefaultTraversablePanel {
167171
rootFolderInOddgenViewTextField.text = info.rootFolderInOddgenView
168172
generateFilesCheckBox.selected = info.generateFiles
169173
outputDirectoryTextField.text = info.outputDirectory
174+
deleteExistingFilesCheckBox.selected = info.deleteExistingFiles
170175
super.onEntry(traversableContext)
171176
}
172177

@@ -190,6 +195,7 @@ class PreferencePanel extends DefaultTraversablePanel {
190195
info.rootFolderInOddgenView = rootFolderInOddgenViewTextField.text
191196
info.generateFiles = generateFilesCheckBox.selected
192197
info.outputDirectory = outputDirectoryTextField.text
198+
info.deleteExistingFiles = deleteExistingFilesCheckBox.selected
193199
super.onExit(traversableContext)
194200
}
195201

sqldev/src/main/java/org/utplsql/sqldev/dal/UtplsqlDao.xtend

+20-20
Original file line numberDiff line numberDiff line change
@@ -276,16 +276,16 @@ class UtplsqlDao {
276276
var sql = '''
277277
WITH
278278
base AS (
279-
SELECT rownum AS an_id,
280-
o.object_owner,
281-
o.object_type,
282-
o.object_name,
283-
lower(a.name) AS name,
284-
a.text,
279+
SELECT rownum AS an_id,
280+
o.object_owner,
281+
o.object_type,
282+
o.object_name,
283+
lower(a.name) AS name,
284+
a.text,
285285
a.subobject_name
286286
FROM table(ut3.ut_annotation_manager.get_annotated_objects(user, 'PACKAGE')) o
287287
CROSS JOIN table(o.annotations) a
288-
WHERE lower(a.name) in ('suite','suitepath', 'endcontext','test')
288+
WHERE lower(a.name) in ('suite', 'suitepath', 'endcontext', 'test')
289289
OR lower(a.name) = 'context' AND regexp_like(text, '(\w+)(\.\w+)*')
290290
),
291291
suite AS (
@@ -294,18 +294,18 @@ class UtplsqlDao {
294294
WHERE name = 'suite'
295295
),
296296
suitepath as (
297-
SELECT object_owner, object_type, object_name, text as suitepath
297+
SELECT object_owner, object_type, object_name, text AS suitepath
298298
FROM base
299299
WHERE name = 'suitepath'
300300
),
301301
context_base AS (
302302
SELECT an_id,
303-
lead(an_id) over (partition by object_owner, object_type, object_name order by an_id) an_id_end,
303+
lead(an_id) over (partition by object_owner, object_type, object_name order by an_id) AS an_id_end,
304304
object_owner,
305305
object_type,
306306
object_name,
307307
name,
308-
lead(name) over (partition by object_owner, object_type, object_name order by an_id) name_end,
308+
lead(name) over (partition by object_owner, object_type, object_name order by an_id) AS name_end,
309309
text as context
310310
FROM base
311311
WHERE name IN ('context', 'endcontext')
@@ -317,14 +317,14 @@ class UtplsqlDao {
317317
AND name_end = 'endcontext'
318318
),
319319
test AS (
320-
SELECT b.an_id,
321-
b.object_owner,
322-
b.object_type,
320+
SELECT b.an_id,
321+
b.object_owner,
322+
b.object_type,
323323
b.object_name,
324324
p.suitepath,
325-
c.context,
326-
b.subobject_name,
327-
b.text AS test_description
325+
c.context,
326+
b.subobject_name,
327+
b.text AS test_description
328328
FROM base b
329329
LEFT JOIN suitepath p
330330
ON p.object_owner = b.object_owner
@@ -334,11 +334,11 @@ class UtplsqlDao {
334334
ON c.object_owner = b.object_owner
335335
AND c.object_type = b.object_type
336336
AND c.object_name = b.object_name
337-
AND b.an_id BETWEEN c.an_id AND c.an_id_end
337+
AND b.an_id BETWEEN c.an_id AND c.an_id_end
338338
WHERE name = 'test'
339339
AND (b.object_owner, b.object_type, b.object_name) IN (
340-
select object_owner, object_type, object_name
341-
from suite
340+
SELECT object_owner, object_type, object_name
341+
FROM suite
342342
)
343343
),
344344
suite_tree AS (
@@ -390,7 +390,7 @@ class UtplsqlDao {
390390
substr(suitepath, 1, instr(suitepath || '.', '.', 1, g.pos) -1) AS suitepath
391391
FROM suitepath_base b
392392
JOIN gen g
393-
On g.pos <= regexp_count(suitepath, '\w+')
393+
ON g.pos <= regexp_count(suitepath, '\w+')
394394
),
395395
suitepath_tree AS (
396396
SELECT NULL AS parent_id,

sqldev/src/main/java/org/utplsql/sqldev/menu/UtplsqlController.xtend

-2
Original file line numberDiff line numberDiff line change
@@ -195,8 +195,6 @@ class UtplsqlController implements Controller {
195195
}
196196

197197
private def void populateGenContext(GenContext genContext, PreferenceModel preferences) {
198-
genContext.generateFiles = preferences.generateFiles
199-
genContext.outputDirectory = preferences.outputDirectory
200198
genContext.testPackagePrefix = preferences.testPackagePrefix.toLowerCase
201199
genContext.testPackageSuffix = preferences.testPackageSuffix.toLowerCase
202200
genContext.testUnitPrefix = preferences.testUnitPrefix.toLowerCase

sqldev/src/main/java/org/utplsql/sqldev/model/oddgen/GenContext.xtend

-2
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@ class GenContext extends AbstractModel {
2424
Connection conn
2525
String objectType
2626
String objectName
27-
boolean generateFiles
28-
String outputDirectory
2927
String testPackagePrefix
3028
String testPackageSuffix
3129
String testUnitPrefix

sqldev/src/main/java/org/utplsql/sqldev/model/preference/PreferenceModel.xtend

+9
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ class PreferenceModel extends HashStructureAdapter {
5050
static final String KEY_INDENT_SPACES="indentSpaces"
5151
static final String KEY_GENERATE_FILES="generateFiles"
5252
static final String KEY_OUTPUT_DIRECTORY = "outputDirectory"
53+
static final String KEY_DELETE_EXISTING_FILES="deleteExistingFiles"
5354
static final String KEY_ROOT_FOLDER_IN_ODDGEN_VIEW = "rootFolderInOddgenView"
5455

5556
def isUnsharedWorksheet() {
@@ -189,6 +190,14 @@ class PreferenceModel extends HashStructureAdapter {
189190
getHashStructure.putString(PreferenceModel.KEY_OUTPUT_DIRECTORY, dir)
190191
}
191192

193+
def isDeleteExistingFiles() {
194+
return getHashStructure.getBoolean(PreferenceModel.KEY_DELETE_EXISTING_FILES, false)
195+
}
196+
197+
def setDeleteExistingFiles(boolean deleteExistingFiles) {
198+
getHashStructure.putBoolean(PreferenceModel.KEY_DELETE_EXISTING_FILES, deleteExistingFiles)
199+
}
200+
192201
def getRootFolderInOddgenView() {
193202
return getHashStructure.getString(PreferenceModel.KEY_ROOT_FOLDER_IN_ODDGEN_VIEW, "utPLSQL")
194203
}

sqldev/src/main/java/org/utplsql/sqldev/oddgen/TestGenerator.xtend

+28-6
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import java.util.ArrayList
2121
import java.util.HashMap
2222
import java.util.LinkedHashMap
2323
import java.util.List
24+
import java.util.logging.Logger
2425
import oracle.ide.config.Preferences
2526
import org.oddgen.sqldev.generators.OddgenGenerator2
2627
import org.oddgen.sqldev.generators.model.Node
@@ -32,12 +33,14 @@ import org.utplsql.sqldev.model.preference.PreferenceModel
3233
import org.utplsql.sqldev.resources.UtplsqlResources
3334

3435
class TestGenerator implements OddgenGenerator2 {
36+
static final Logger logger = Logger.getLogger(TestGenerator.name);
3537

3638
public static val YES = "Yes"
3739
public static val NO = "No"
3840

3941
public static var GENERATE_FILES = UtplsqlResources.getString("PREF_GENERATE_FILES_LABEL")
4042
public static var OUTPUT_DIRECTORY = UtplsqlResources.getString("PREF_OUTPUT_DIRECTORY_LABEL")
43+
public static var DELETE_EXISTING_FILES = UtplsqlResources.getString("PREF_DELETE_EXISTING_FILES_LABEL")
4144
public static var TEST_PACKAGE_PREFIX = UtplsqlResources.getString("PREF_TEST_PACKAGE_PREFIX_LABEL")
4245
public static var TEST_PACKAGE_SUFFIX = UtplsqlResources.getString("PREF_TEST_PACKAGE_SUFFIX_LABEL")
4346
public static var TEST_UNIT_PREFIX = UtplsqlResources.getString("PREF_TEST_UNIT_PREFIX_LABEL")
@@ -56,8 +59,6 @@ class TestGenerator implements OddgenGenerator2 {
5659
val context = new GenContext()
5760
context.objectType = node.toObjectType
5861
context.objectName = node.toObjectName
59-
context.generateFiles = node.params.get(GENERATE_FILES) == YES
60-
context.outputDirectory = node.params.get(OUTPUT_DIRECTORY)
6162
context.testPackagePrefix = node.params.get(TEST_PACKAGE_PREFIX).toLowerCase
6263
context.testPackageSuffix = node.params.get(TEST_PACKAGE_SUFFIX).toLowerCase
6364
context.testUnitPrefix = node.params.get(TEST_UNIT_PREFIX).toLowerCase
@@ -75,7 +76,21 @@ class TestGenerator implements OddgenGenerator2 {
7576
}
7677

7778
private def void saveConsoleOutput(String s) {
78-
consoleOutput.add(s)
79+
if (s !== null) {
80+
for (line : s.split("[\\n\\r]+")) {
81+
consoleOutput.add(line)
82+
}
83+
}
84+
}
85+
86+
private def void logConsoleOutput() {
87+
for (line : consoleOutput) {
88+
if (line.contains("error") || line.startsWith("Cannot")) {
89+
logger.severe(line)
90+
} else {
91+
logger.fine(line)
92+
}
93+
}
7994
}
8095

8196
private def String deleteFile(File file) {
@@ -145,6 +160,7 @@ class TestGenerator implements OddgenGenerator2 {
145160
val params = new LinkedHashMap<String, String>()
146161
params.put(GENERATE_FILES, if (preferences.generateFiles) {YES} else {NO})
147162
params.put(OUTPUT_DIRECTORY, preferences.outputDirectory)
163+
params.put(DELETE_EXISTING_FILES, if (preferences.deleteExistingFiles) {YES} else {NO})
148164
params.put(TEST_PACKAGE_PREFIX, preferences.testPackagePrefix)
149165
params.put(TEST_PACKAGE_SUFFIX, preferences.testPackageSuffix)
150166
params.put(TEST_UNIT_PREFIX, preferences.testUnitPrefix)
@@ -197,22 +213,27 @@ class TestGenerator implements OddgenGenerator2 {
197213
lov.put(GENERATE_COMMENTS, #[YES, NO])
198214
lov.put(DISABLE_TESTS, #[YES, NO])
199215
lov.put(GENERATE_FILES, #[YES, NO])
216+
lov.put(DELETE_EXISTING_FILES, #[YES, NO])
200217
return lov
201218
}
202219

203220
override getParamStates(Connection conn, LinkedHashMap<String, String> params, List<Node> nodes) {
204221
val paramStates = new HashMap<String, Boolean>
205222
paramStates.put(OUTPUT_DIRECTORY, params.get(GENERATE_FILES) == YES)
223+
paramStates.put(DELETE_EXISTING_FILES, params.get(GENERATE_FILES) == YES)
206224
return paramStates
207225
}
208226

209227
override generateProlog(Connection conn, List<Node> nodes) '''
210228
«val generateFiles = nodes.get(0).params.get(GENERATE_FILES) == YES»
211229
«val outputDirectory = nodes.get(0).params.get(OUTPUT_DIRECTORY
230+
«val deleteExistingfiles = nodes.get(0).params.get(DELETE_EXISTING_FILES) == YES»
212231
«IF generateFiles»
213232
«resetConsoleOutput»
214233
«outputDirectory.mkdirs.saveConsoleOutput»
215-
«deleteFiles(outputDirectory).toString.saveConsoleOutput»
234+
«IF deleteExistingfiles»
235+
«deleteFiles(outputDirectory).toString.saveConsoleOutput»
236+
«ENDIF»
216237
--
217238
-- install generated utPLSQL test packages
218239
--
@@ -232,10 +253,11 @@ class TestGenerator implements OddgenGenerator2 {
232253

233254
«ENDIF»
234255
«ENDFOR»
235-
«IF generateFiles && consoleOutput.size > 0»
256+
«logConsoleOutput»
257+
«IF generateFiles && consoleOutput.findFirst[it.contains("error")] !== null»
236258

237259
--
238-
-- console output produced during the generation of this script
260+
-- console output produced during the generation of this script (errors found)
239261
--
240262
/*
241263

sqldev/src/main/resources/org/utplsql/sqldev/resources/UtplsqlResources.properties

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ PREF_CHECK_GENERATE_UTPLSQL_TEST_LABEL=Check availability of "Generate utPLSQL t
2626
PREF_ROOT_FOLDER_IN_ODDGEN_VIEW_LABEL=Root folder in Generators view
2727
PREF_GENERATE_FILES_LABEL=Generate files?
2828
PREF_OUTPUT_DIRECTORY_LABEL=Output directory
29+
PREF_DELETE_EXISTING_FILES_LABEL=Delete existing files in output directory?
2930
MENU_RUN_TEST_LABEL=Run utPLSQL test
3031
MENU_GENERATE_TEST_LABEL=Generate utPLSQL test
3132
WORKSHEET_TITLE=utPLSQL

sqldev/src/main/resources/org/utplsql/sqldev/resources/UtplsqlResources_de.properties

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ PREF_CHECK_GENERATE_UTPLSQL_TEST_LABEL=Verf
2020
PREF_ROOT_FOLDER_IN_ODDGEN_VIEW_LABEL=Hauptverzeichnis in Generatoren Ansicht
2121
PREF_GENERATE_FILES_LABEL=Dateien generieren?
2222
PREF_OUTPUT_DIRECTORY_LABEL=Ausgabeverzeichnis
23+
PREF_DELETE_EXISTING_FILES_LABEL=Bestehende Dateien im Ausgabeverzeichnis löschen?
2324
MENU_RUN_TEST_LABEL=utPLSQL Test ausführen
2425
MENU_GENERATE_TEST_LABEL=utPLSQL Test generieren
2526
WORKSHEET_TITLE=utPLSQL

0 commit comments

Comments
 (0)