8000 "Delete existing files" preference by PhilippSalvisberg · Pull Request #31 · utPLSQL/utPLSQL-SQLDeveloper · GitHub
[go: up one dir, main page]

Skip to content

"Delete existing files" preference #31

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Oct 13, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion sqldev/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<!-- The Basics -->
<groupId>org.utplsql</groupId>
<artifactId>org.utplsql.sqldev</artifactId>
<version>0.4.0-SNASHOT</version>
<version>0.4.0</version>
<packaging>bundle</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
Expand Down
6 changes: 6 additions & 0 deletions sqldev/src/main/java/org/utplsql/sqldev/PreferencePanel.xtend
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ class PreferencePanel extends DefaultTraversablePanel {
val JCheckBox generateFilesCheckBox = new JCheckBox
val JTextField outputDirectoryTextField = new JTextField
val JButton outputDirectoryBrowse = new JButton();
val JCheckBox deleteExistingFilesCheckBox = new JCheckBox

new() {
layoutControls()
Expand Down Expand Up @@ -129,6 +130,9 @@ class PreferencePanel extends DefaultTraversablePanel {
b3.add(
b3.field.label.withText(UtplsqlResources.getString("PREF_OUTPUT_DIRECTORY_LABEL")).component(
outputDirectoryTextField).button(outputDirectoryBrowse).withText("Bro&wse"))
b3.add(
b3.field.label.withText(UtplsqlResources.getString("PREF_DELETE_EXISTING_FILES_LABEL")).component(
deleteExistingFilesCheckBox))

// putting everything together
val FieldLayoutBuilder builder = new FieldLayoutBuilder(this)
Expand Down Expand Up @@ -167,6 +171,7 @@ class PreferencePanel extends DefaultTraversablePanel {
rootFolderInOddgenViewTextField.text = info.rootFolderInOddgenView
generateFilesCheckBox.selected = info.generateFiles
outputDirectoryTextField.text = info.outputDirectory
deleteExistingFilesCheckBox.selected = info.deleteExistingFiles
super.onEntry(traversableContext)
}

Expand All @@ -190,6 +195,7 @@ class PreferencePanel extends DefaultTraversablePanel {
info.rootFolderInOddgenView = rootFolderInOddgenViewTextField.text
info.generateFiles = generateFilesCheckBox.selected
info.outputDirectory = outputDirectoryTextField.text
info.deleteExistingFiles = deleteExistingFilesCheckBox.selected
super.onExit(traversableContext)
}

Expand Down
40 changes: 20 additions & 20 deletions sqldev/src/main/java/org/utplsql/sqldev/dal/UtplsqlDao.xtend
Original file line number Diff line number Diff line change
Expand Up @@ -276,16 +276,16 @@ class UtplsqlDao {
var sql = '''
WITH
base AS (
SELECT rownum AS an_id,
o.object_owner,
o.object_type,
o.object_name,
lower(a.name) AS name,
a.text,
SELECT rownum AS an_id,
o.object_owner,
o.object_type,
o.object_name,
lower(a.name) AS name,
a.text,
a.subobject_name
FROM table(ut3.ut_annotation_manager.get_annotated_objects(user, 'PACKAGE')) o
CROSS JOIN table(o.annotations) a
WHERE lower(a.name) in ('suite','suitepath', 'endcontext','test')
WHERE lower(a.name) in ('suite', 'suitepath', 'endcontext', 'test')
OR lower(a.name) = 'context' AND regexp_like(text, '(\w+)(\.\w+)*')
),
suite AS (
Expand All @@ -294,18 +294,18 @@ class UtplsqlDao {
WHERE name = 'suite'
),
suitepath as (
SELECT object_owner, object_type, object_name, text as suitepath
SELECT object_owner, object_type, object_name, text AS suitepath
FROM base
WHERE name = 'suitepath'
),
context_base AS (
SELECT an_id,
lead(an_id) over (partition by object_owner, object_type, object_name order by an_id) an_id_end,
lead(an_id) over (partition by object_owner, object_type, object_name order by an_id) AS an_id_end,
object_owner,
object_type,
object_name,
name,
lead(name) over (partition by object_owner, object_type, object_name order by an_id) name_end,
lead(name) over (partition by object_owner, object_type, object_name order by an_id) AS name_end,
text as context
FROM base
WHERE name IN ('context', 'endcontext')
Expand All @@ -317,14 +317,14 @@ class UtplsqlDao {
AND name_end = 'endcontext'
),
test AS (
SELECT b.an_id,
b.object_owner,
b.object_type,
SELECT b.an_id,
b.object_owner,
b.object_type,
b.object_name,
p.suitepath,
c.context,
b.subobject_name,
b.text AS test_description
c.context,
b.subobject_name,
b.text AS test_description
FROM base b
LEFT JOIN suitepath p
ON p.object_owner = b.object_owner
Expand All @@ -334,11 +334,11 @@ class UtplsqlDao {
ON c.object_owner = b.object_owner
AND c.object_type = b.object_type
AND c.object_name = b.object_name
AND b.an_id BETWEEN c.an_id AND c.an_id_end
AND b.an_id BETWEEN c.an_id AND c.an_id_end
WHERE name = 'test'
AND (b.object_owner, b.object_type, b.object_name) IN (
select object_owner, object_type, object_name
from suite
SELECT object_owner, object_type, object_name
FROM suite
)
),
suite_tree AS (
Expand Down Expand Up @@ -390,7 +390,7 @@ class UtplsqlDao {
substr(suitepath, 1, instr(suitepath || '.', '.', 1, g.pos) -1) AS suitepath
FROM suitepath_base b
JOIN gen g
On g.pos <= regexp_count(suitepath, '\w+')
ON g.pos <= regexp_count(suitepath, '\w+')
),
suitepath_tree AS (
SELECT NULL AS parent_id,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -195,8 +195,6 @@ class UtplsqlController implements Controller {
}

private def void populateGenContext(GenContext genContext, PreferenceModel preferences) {
genContext.generateFiles = preferences.generateFiles
genContext.outputDirectory = preferences.outputDirectory
genContext.testPackagePrefix = preferences.testPackagePrefix.toLowerCase
genContext.testPackageSuffix = preferences.testPackageSuffix.toLowerCase
genContext.testUnitPrefix = preferences.testUnitPrefix.toLowerCase
Expand Down
9E19
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,6 @@ class GenContext extends AbstractModel {
Connection conn
String objectType
String objectName
boolean generateFiles
String outputDirectory
String testPackagePrefix
String testPackageSuffix
String testUnitPrefix
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ class PreferenceModel extends HashStructureAdapter {
static final String KEY_INDENT_SPACES="indentSpaces"
static final String KEY_GENERATE_FILES="generateFiles"
static final String KEY_OUTPUT_DIRECTORY = "outputDirectory"
static final String KEY_DELETE_EXISTING_FILES="deleteExistingFiles"
static final String KEY_ROOT_FOLDER_IN_ODDGEN_VIEW = "rootFolderInOddgenView"

def isUnsharedWorksheet() {
Expand Down Expand Up @@ -189,6 +190,14 @@ class PreferenceModel extends HashStructureAdapter {
getHashStructure.putString(PreferenceModel.KEY_OUTPUT_DIRECTORY, dir)
}

def isDeleteExistingFiles() {
return getHashStructure.getBoolean(PreferenceModel.KEY_DELETE_EXISTING_FILES, false)
}

def setDeleteExistingFiles(boolean deleteExistingFiles) {
getHashStructure.putBoolean(PreferenceModel.KEY_DELETE_EXISTING_FILES, deleteExistingFiles)
}

def getRootFolderInOddgenView() {
return getHashStructure.getString(PreferenceModel.KEY_ROOT_FOLDER_IN_ODDGEN_VIEW, "utPLSQL")
}
Expand Down
34 changes: 28 additions & 6 deletions sqldev/src/main/java/org/utplsql/sqldev/oddgen/TestGenerator.xtend
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import java.util.ArrayList
import java.util.HashMap
import java.util.LinkedHashMap
import java.util.List
import java.util.logging.Logger
import oracle.ide.config.Preferences
import org.oddgen.sqldev.generators.OddgenGenerator2
import org.oddgen.sqldev.generators.model.Node
Expand All @@ -32,12 +33,14 @@ import org.utplsql.sqldev.model.preference.PreferenceModel
import org.utplsql.sqldev.resources.UtplsqlResources

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

public static val YES = "Yes"
public static val NO = "No"

public static var GENERATE_FILES = UtplsqlResources.getString("PREF_GENERATE_FILES_LABEL")
public static var OUTPUT_DIRECTORY = UtplsqlResources.getString("PREF_OUTPUT_DIRECTORY_LABEL")
public static var DELETE_EXISTING_FILES = UtplsqlResources.getString("PREF_DELETE_EXISTING_FILES_LABEL")
public static var TEST_PACKAGE_PREFIX = UtplsqlResources.getString("PREF_TEST_PACKAGE_PREFIX_LABEL")
public static var TEST_PACKAGE_SUFFIX = UtplsqlResources.getString("PREF_TEST_PACKAGE_SUFFIX_LABEL")
public static var TEST_UNIT_PREFIX = UtplsqlResources.getString("PREF_TEST_UNIT_PREFIX_LABEL")
Expand All @@ -56,8 +59,6 @@ class TestGenerator implements OddgenGenerator2 {
val context = new GenContext()
context.objectType = node.toObjectType
context.objectName = node.toObjectName
context.generateFiles = node.params.get(GENERATE_FILES) == YES
context.outputDirectory = node.params.get(OUTPUT_DIRECTORY)
context.testPackagePrefix = node.params.get(TEST_PACKAGE_PREFIX).toLowerCase
context.testPackageSuffix = node.params.get(TEST_PACKAGE_SUFFIX).toLowerCase
context.testUnitPrefix = node.params.get(TEST_UNIT_PREFIX).toLowerCase
Expand All @@ -75,7 +76,21 @@ class TestGenerator implements OddgenGenerator2 {
}

private def void saveConsoleOutput(String s) {
consoleOutput.add(s)
if (s !== null) {
for (line : s.split("[\\n\\r]+")) {
consoleOutput.add(line)
}
}
}

private def void logConsoleOutput() {
for (line : consoleOutput) {
if (line.contains("error") || line.startsWith("Cannot")) {
logger.severe(line)
} else {
logger.fine(line)
}
}
}

private def String deleteFile(File file) {
Expand Down Expand Up @@ -145,6 +160,7 @@ class TestGenerator implements OddgenGenerator2 {
val params = new LinkedHashMap<String, String>()
params.put(GENERATE_FILES, if (preferences.generateFiles) {YES} else {NO})
params.put(OUTPUT_DIRECTORY, preferences.outputDirectory)
params.put(DELETE_EXISTING_FILES, if (preferences.deleteExistingFiles) {YES} else {NO})
params.put(TEST_PACKAGE_PREFIX, preferences.testPackagePrefix)
params.put(TEST_PACKAGE_SUFFIX, preferences.testPackageSuffix)
params.put(TEST_UNIT_PREFIX, preferences.testUnitPrefix)
Expand Down Expand Up @@ -197,22 +213,27 @@ class TestGenerator implements OddgenGenerator2 {
lov.put(GENERATE_COMMENTS, #[YES, NO])
lov.put(DISABLE_TESTS, #[YES, NO])
lov.put(GENERATE_FILES, #[YES, NO])
lov.put(DELETE_EXISTING_FILES, #[YES, NO])
return lov
}

override getParamStates(Connection conn, LinkedHashMap<String, String> params, List<Node> nodes) {
val paramStates = new HashMap<String, Boolean>
paramStates.put(OUTPUT_DIRECTORY, params.get(GENERATE_FILES) == YES)
paramStates.put(DELETE_EXISTING_FILES, params.get(GENERATE_FILES) == YES)
return paramStates
}

override generateProlog(Connection conn, List<Node> nodes) '''
«val generateFiles = nodes.get(0).params.get(GENERATE_FILES) == YES»
«val outputDirectory = nodes.get(0).params.get(OUTPUT_DIRECTORY)»
«val deleteExistingfiles = nodes.get(0).params.get(DELETE_EXISTING_FILES) == YES»
«IF generateFiles»
«resetConsoleOutput»
«outputDirectory.mkdirs.saveConsoleOutput»
«deleteFiles(outputDirectory).toString.saveConsoleOutput»
«IF deleteExistingfiles»
«deleteFiles(outputDirectory).toString.saveConsoleOutput»
«ENDIF»
--
-- install generated utPLSQL test packages
--
Expand All @@ -232,10 +253,11 @@ class TestGenerator implements OddgenGenerator2 {

«ENDIF»
«ENDFOR»
«IF generateFiles && consoleOutput.size > 0»
«logConsoleOutput»
«IF generateFiles && consoleOutput.findFirst[it.contains("error")] !== null»

--
-- console output produced during the generation of this script
-- console output produced during the generation of this script (errors found)
--
/*

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ PREF_CHECK_GENERATE_UTPLSQL_TEST_LABEL=Check availability of "Generate utPLSQL t
PREF_ROOT_FOLDER_IN_ODDGEN_VIEW_LABEL=Root folder in Generators view
PREF_GENERATE_FILES_LABEL=Generate files?
PREF_OUTPUT_DIRECTORY_LABEL=Output directory
PREF_DELETE_EXISTING_FILES_LABEL=Delete existing files in output directory?
MENU_RUN_TEST_LABEL=Run utPLSQL test
MENU_GENERATE_TEST_LABEL=Generate utPLSQL test
WORKSHEET_TITLE=utPLSQL
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ PREF_CHECK_GENERATE_UTPLSQL_TEST_LABEL=Verf
PREF_ROOT_FOLDER_IN_ODDGEN_VIEW_LABEL=Hauptverzeichnis in Generatoren Ansicht
PREF_GENERATE_FILES_LABEL=Dateien generieren?
PREF_OUTPUT_DIRECTORY_LABEL=Ausgabeverzeichnis
PREF_DELETE_EXISTING_FILES_LABEL=Bestehende Dateien im Ausgabeverzeichnis l�schen?
MENU_RUN_TEST_LABEL=utPLSQL Test ausf�hren
MENU_GENERATE_TEST_LABEL=utPLSQL Test generieren
WORKSHEET_TITLE=utPLSQL
0