Skip to content
This repository was archived by the owner on Apr 22, 2025. It is now read-only.

Commit 632f93b

Browse files
committed
Update the development progress
1 parent e853597 commit 632f93b

File tree

91 files changed

+1756
-2105
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

91 files changed

+1756
-2105
lines changed

mycollab-app-community/src/main/config/application.properties.ftl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ server.storageSystem=file
1818
server.siteUrl=http://%s:%d/
1919
server.resourceDownloadUrl=http://%s:%d/file/
2020
server.cdnUrl=http://%s:%d/assets/
21+
server.dataDir=userdir
2122

2223
#=====================================================
2324
# DATABASE CONFIGURATION

mycollab-config/src/main/java/com/mycollab/configuration/ServerConfiguration.kt

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,13 @@
1616
*/
1717
package com.mycollab.configuration
1818

19+
import com.mycollab.core.MyCollabException
20+
import com.mycollab.core.utils.FileUtils
1921
import org.springframework.boot.context.properties.ConfigurationProperties
2022
import org.springframework.stereotype.Component
23+
import java.io.File
24+
import java.nio.file.Files
25+
import java.nio.file.StandardCopyOption
2126

2227
/**
2328
* @author MyCollab Ltd
@@ -29,17 +34,46 @@ class ServerConfiguration(var storageSystem: String = STORAGE_FILE, var port: In
2934
var address: String = "",
3035
var apiUrl: String = "", var pullMethod: String = "", var siteUrl: String = "",
3136
var resourceDownloadUrl: String = "", var cdnUrl: String = "",
32-
var dataDir: String = "") {
37+
var dataDir: String = USER_DIR) {
38+
39+
private var _cacheHomeDir:File? = null
3340

3441
fun getApiUrl(path: String) = "$apiUrl$path"
3542

43+
fun getHomeDir(): File {
44+
if (_cacheHomeDir == null) {
45+
val userFolder = when (dataDir) {
46+
USER_DIR -> System.getProperty("user.home")
47+
APP_DIR -> System.getProperty("user.dir")
48+
else -> throw MyCollabException("Not support data dir value $dataDir")
49+
}
50+
_cacheHomeDir = File("$userFolder/.mycollab")
51+
val userHomeDir = File(System.getProperty("user.dir") + "/.mycollab")
52+
if (userHomeDir.exists() && _cacheHomeDir!!.toPath() != userHomeDir.toPath()) {
53+
try {
54+
Files.move(userHomeDir.toPath(), _cacheHomeDir!!.toPath(), StandardCopyOption.REPLACE_EXISTING)
55+
} catch (e: Exception) {
56+
userHomeDir
57+
}
58+
59+
} else {
60+
FileUtils.mkdirs(_cacheHomeDir!!)
61+
}
62+
}
63+
return _cacheHomeDir!!
64+
}
65+
3666
val isPush: Boolean
37-
get() = !"pull".equals(pullMethod ?: "", ignoreCase = true)
67+
get() = !"pull".equals(pullMethod, ignoreCase = true)
3868

3969
companion object {
4070

4171
const val STORAGE_FILE = "file"
4272

4373
const val STORAGE_S3 = "s3"
74+
75+
const val USER_DIR = "userdir"
76+
77+
const val APP_DIR = "appdir"
4478
}
4579
}

mycollab-core/src/main/java/com/mycollab/core/utils/FileUtils.kt

Lines changed: 1 addition & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import java.io.File
2323
import java.io.IOException
2424
import java.nio.charset.Charset
2525
import java.nio.file.Files
26-
import java.nio.file.StandardCopyOption.REPLACE_EXISTING
2726
import java.util.*
2827
import java.util.regex.Pattern
2928

@@ -33,35 +32,6 @@ import java.util.regex.Pattern
3332
*/
3433
object FileUtils {
3534

36-
private var _homeFolder: File
37-
38-
init {
39-
val userFolder = System.getProperty("user.dir")
40-
val homeDir = File("$userFolder/.mycollab")
41-
val userHomeDir = File(System.getProperty("user.home") + "/.mycollab")
42-
if (userHomeDir.exists()) {
43-
_homeFolder = try {
44-
Files.move(userHomeDir.toPath(), homeDir.toPath(), REPLACE_EXISTING)
45-
homeDir
46-
} catch (e: Exception) {
47-
userHomeDir
48-
}
49-
50-
} else {
51-
_homeFolder = when {
52-
homeDir.exists() -> homeDir
53-
else -> {
54-
FileUtils.mkdirs(homeDir)
55-
homeDir
56-
}
57-
}
58-
}
59-
}
60-
61-
@JvmStatic
62-
val homeFolder
63-
get() = _homeFolder
64-
6535
@JvmStatic
6636
val userFolder: File
6737
get() {
@@ -72,7 +42,7 @@ object FileUtils {
7242
@JvmStatic
7343
fun readFileAsPlainString(fileName: String): String {
7444
try {
75-
val pricingFile = FileUtils.getDesireFile(userFolder, fileName, "src/main/conf/$fileName")
45+
val pricingFile = getDesireFile(userFolder, fileName, "src/main/conf/$fileName")
7646
return when {
7747
pricingFile != null -> String(Files.readAllBytes(pricingFile.toPath()), Charset.forName("UTF-8"))
7848
else -> ""

mycollab-migration/src/main/resources/db/migration/h2/V20190101_1__InitDb.sql

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -712,7 +712,6 @@ CREATE TABLE `m_prj_message` (
712712
`lastUpdatedTime` datetime DEFAULT NULL,
713713
`sAccountId` int(11) NOT NULL,
714714
`isStick` bit(1) DEFAULT NULL,
715-
`prjKey` int(11) DEFAULT NULL,
716715
PRIMARY KEY (`id`),
717716
KEY `FK_m_prj_message_2` (`projectId`),
718717
KEY `FK_m_prj_message_3` (`sAccountId`),
@@ -1049,7 +1048,6 @@ CREATE TABLE `m_prj_component` (
10491048
`lastUpdatedTime` datetime DEFAULT NULL,
10501049
`createdTime` datetime DEFAULT NULL,
10511050
`status` varchar(45) DEFAULT NULL,
1052-
`prjKey` int(11) DEFAULT NULL,
10531051
PRIMARY KEY (`id`),
10541052
KEY `FK_m_prj_component_1` (`projectId`),
10551053
KEY `FK_m_prj_component_4` (`sAccountId`),
@@ -1103,7 +1101,6 @@ CREATE TABLE `m_prj_version` (
11031101
`lastUpdatedTime` datetime DEFAULT NULL,
11041102
`createdTime` datetime DEFAULT NULL,
11051103
`status` varchar(45) DEFAULT NULL,
1106-
`prjKey` int(11) DEFAULT NULL,
11071104
PRIMARY KEY (`id`),
11081105
KEY `FK_m_project_bug_1` (`projectId`),
11091106
KEY `FK_m_project_bug_3` (`sAccountId`),

mycollab-migration/src/main/resources/db/migration/mysql/V20190325_1__Custom_Fields.sql

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,4 +195,6 @@ ALTER TABLE `m_prj_ticket_relation`
195195
CHANGE COLUMN `rel` `rel` VARCHAR(45) NOT NULL ;
196196

197197

198-
198+
ALTER TABLE `m_prj_version` DROP COLUMN `prjKey`;
199+
ALTER TABLE `m_prj_message` DROP COLUMN `prjKey`;
200+
ALTER TABLE `m_prj_component` DROP COLUMN `prjKey`;

mycollab-migration/src/main/resources/db/migration/postgresql/V20190201_1__InitDb.sql

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -664,7 +664,6 @@ CREATE TABLE m_prj_message (
664664
lastUpdatedTime timestamp DEFAULT NULL,
665665
sAccountId integer NOT NULL,
666666
isStick boolean DEFAULT NULL,
667-
prjKey integer DEFAULT NULL,
668667
PRIMARY KEY (id),
669668
CONSTRAINT FK_m_prj_message_1 FOREIGN KEY (createdUser) REFERENCES s_user (username) ON DELETE SET NULL ON UPDATE CASCADE,
670669
CONSTRAINT FK_m_prj_message_2 FOREIGN KEY (projectId) REFERENCES m_prj_project (id) ON DELETE CASCADE ON UPDATE CASCADE,
@@ -969,7 +968,6 @@ CREATE TABLE m_prj_component (
969968
lastUpdatedTime timestamp DEFAULT NULL,
970969
createdTime timestamp DEFAULT NULL,
971970
status varchar(45) DEFAULT NULL,
972-
prjKey integer DEFAULT NULL,
973971
PRIMARY KEY (id),
974972
CONSTRAINT FK_m_prj_component_1 FOREIGN KEY (projectId) REFERENCES m_prj_project (id) ON DELETE CASCADE ON UPDATE CASCADE,
975973
CONSTRAINT FK_m_prj_component_2 FOREIGN KEY (userlead) REFERENCES s_user (username) ON DELETE CASCADE ON UPDATE CASCADE,
@@ -1017,7 +1015,6 @@ CREATE TABLE m_prj_version (
10171015
lastUpdatedTime timestamp DEFAULT NULL,
10181016
createdTime timestamp DEFAULT NULL,
10191017
status varchar(45) DEFAULT NULL,
1020-
prjKey integer DEFAULT NULL,
10211018
PRIMARY KEY (id),
10221019
CONSTRAINT FK_m_prj_version_1 FOREIGN KEY (projectId) REFERENCES m_prj_project (id) ON DELETE CASCADE ON UPDATE CASCADE,
10231020
CONSTRAINT FK_m_prj_version_2 FOREIGN KEY (createdUser) REFERENCES s_user (username) ON DELETE CASCADE ON UPDATE CASCADE,

mycollab-services-community/src/main/java/com/mycollab/community/common/service/AppPropertiesServiceImpl.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@
1717
package com.mycollab.community.common.service
1818

1919
import com.mycollab.common.service.AppPropertiesService
20+
import com.mycollab.configuration.ServerConfiguration
2021
import com.mycollab.core.utils.DateTimeUtils
2122
import com.mycollab.core.utils.FileUtils
2223
import org.slf4j.LoggerFactory
2324
import org.springframework.beans.factory.InitializingBean
25+
import org.springframework.beans.factory.annotation.Autowired
2426
import org.springframework.stereotype.Service
2527
import java.io.File
2628
import java.io.FileInputStream
@@ -40,6 +42,9 @@ class AppPropertiesServiceImpl : AppPropertiesService, InitializingBean {
4042

4143
private lateinit var properties: Properties
4244

45+
@Autowired
46+
private lateinit var serverConfiguration: ServerConfiguration
47+
4348
override val sysId: String
4449
get() = properties.getProperty("id", UUID.randomUUID().toString() + LocalDateTime.now().toInstant(ZoneOffset.UTC).toEpochMilli())
4550

@@ -60,7 +65,7 @@ class AppPropertiesServiceImpl : AppPropertiesService, InitializingBean {
6065
@Throws(Exception::class)
6166
override fun afterPropertiesSet() {
6267
try {
63-
val homeFolder = FileUtils.homeFolder
68+
val homeFolder = serverConfiguration.getHomeDir()
6469
val sysFile = File(homeFolder, ".app.properties")
6570
properties = Properties()
6671
if (sysFile.isFile && sysFile.exists()) {

mycollab-services-community/src/main/java/com/mycollab/community/module/file/service/impl/FileStorageServiceImpl.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,12 @@
1616
*/
1717
package com.mycollab.community.module.file.service.impl
1818

19+
import com.mycollab.configuration.ServerConfiguration
1920
import com.mycollab.core.Version
2021
import com.mycollab.core.utils.FileUtils
2122
import com.mycollab.module.file.service.AbstractStorageService
2223
import org.springframework.beans.factory.InitializingBean
24+
import org.springframework.beans.factory.annotation.Autowired
2325
import org.springframework.stereotype.Service
2426
import java.io.File
2527

@@ -30,9 +32,12 @@ import java.io.File
3032
@Service
3133
class FileStorageServiceImpl : AbstractStorageService(), InitializingBean {
3234

35+
@Autowired
36+
private lateinit var serverConfiguration: ServerConfiguration
37+
3338
@Throws(Exception::class)
3439
override fun afterPropertiesSet() {
35-
val baseContentFolder = FileUtils.homeFolder
40+
val baseContentFolder = serverConfiguration.getHomeDir()
3641
val avatarFolder = File(baseContentFolder, "avatar")
3742
val logoFolder = File(baseContentFolder, "logo")
3843
FileUtils.mkdirs(avatarFolder)

mycollab-services-community/src/test/java/com/mycollab/module/project/service/VersionServiceTest.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ class VersionServiceTest : IntegrationServiceTest() {
6161
tuple(4, "Version 4.0.0", "Open", "4.0.0", 0, 0),
6262
tuple(3, "Version 3.0.0", "Closed", "3.0.0", 1, 1),
6363
tuple(2, "Version 2.0.0", "Closed", "2.0.0", 2, 1),
64-
tuple(1, "Version 1.0.0", "Open", "1.0.0", 1, 1))
64+
tuple(1, "Version 1.0.0", "Open", "1.0.0", 2, 1))
6565
}
6666

6767
@DataSet
@@ -80,8 +80,8 @@ class VersionServiceTest : IntegrationServiceTest() {
8080
val versions = versionService.findPageableListByCriteria(BasicSearchRequest(criteria)) as List<SimpleVersion>
8181
assertThat(versions.size).isEqualTo(1)
8282
assertThat<SimpleVersion>(versions).extracting("id", "description", "status",
83-
"name", "numBugs", "numOpenBugs").contains(
84-
tuple(1, "Version 1.0.0", "Open", "1.0.0", 1, 1))
83+
"name", "numBugs", "numOpenBugs", "numTasks", "numOpenTasks").contains(
84+
tuple(1, "Version 1.0.0", "Open", "1.0.0", 2, 1, 2, 1))
8585
}
8686

8787
@DataSet

mycollab-services-community/src/test/resources/com/mycollab/module/project/service/VersionServiceTest.xml

Lines changed: 30 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -9,41 +9,43 @@
99
<m_prj_project id="1" name="aaa" sAccountId="1" shortName="aaa" status="Open"/>
1010

1111
<m_prj_bug name="name 1" id="1" projectId="1" priority="Medium"
12-
detail="detail 1" status="Open" resolution="1" assignUser="hai79"
13-
createdUser="hai79" createdTime="2014-10-02 06:45:22" sAccountId="1"/>
12+
detail="detail 1" status="Open" resolution="1" assignUser="hai79"
13+
createdUser="hai79" createdTime="2014-10-02 06:45:22" sAccountId="1"/>
1414
<m_prj_bug name="name 2" id="2" projectId="1" priority="Medium"
15-
detail="detail 2" status="InProgress" resolution="1" assignUser="nghiemle"
16-
createdUser="nghiemle" createdTime="2014-10-02 07:45:22" sAccountId="1"/>
15+
detail="detail 2" status="InProgress" resolution="1" assignUser="nghiemle"
16+
createdUser="nghiemle" createdTime="2014-10-02 07:45:22" sAccountId="1"/>
1717
<m_prj_bug name="name 3" id="3" projectId="1" priority="Medium"
18-
detail="detail 3" status="Reopenned" resolution="1" createdUser="hai79"
19-
assignUser="hai79" createdTime="2014-10-03 06:45:22" sAccountId="1"/>
18+
detail="detail 3" status="Reopenned" resolution="1" createdUser="hai79"
19+
assignUser="hai79" createdTime="2014-10-03 06:45:22" sAccountId="1"/>
2020
<m_prj_bug name="name 4" id="4" projectId="1" priority="Medium"
21-
detail="detail 4" status="Closed" resolution="1" createdUser="nghiemle"
22-
assignUser="nghiemle" createdTime="2014-10-01 06:45:22" sAccountId="1"/>
21+
detail="detail 4" status="Closed" resolution="1" createdUser="nghiemle"
22+
assignUser="nghiemle" createdTime="2014-10-01 06:45:22" sAccountId="1"/>
2323

24-
<m_prj_ticket_relation id="1" ticketId="1" ticketType="Project-Bug" type="Project-Version" typeId="1"
25-
rel="AffVersion"/>
26-
<m_prj_ticket_relation id="2" ticketId="2" ticketType="Project-Bug" type="Project-Version" typeId="2"
27-
rel="FixVersion"/>
28-
<m_prj_ticket_relation id="3" ticketId="3" ticketType="Project-Bug" type="Project-Version" typeId="3"
29-
rel="FixVersion"/>
30-
<m_prj_ticket_relation id="4" ticketId="4" ticketType="Project-Bug" type="Project-Version" typeId="2"
31-
rel="AffVersion"/>
24+
<m_prj_task id="1" name="Task 1" percentagecomplete="0" priority="0" status="Open" projectId="1" sAccountId="1"/>
25+
<m_prj_task id="2" name="Task 2" percentagecomplete="100" priority="0" status="Closed" projectId="1" sAccountId="1"/>
26+
27+
<m_prj_ticket_relation id="1" ticketId="1" ticketType="Project-Bug" type="Project-Version" typeId="1" rel="AffVersion"/>
28+
<m_prj_ticket_relation id="2" ticketId="2" ticketType="Project-Bug" type="Project-Version" typeId="2" rel="FixVersion"/>
29+
<m_prj_ticket_relation id="3" ticketId="3" ticketType="Project-Bug" type="Project-Version" typeId="3" rel="FixVersion"/>
30+
<m_prj_ticket_relation id="4" ticketId="4" ticketType="Project-Bug" type="Project-Version" typeId="2" rel="AffVersion"/>
31+
<m_prj_ticket_relation id="5" ticketId="1" ticketType="Project-Task" type="Project-Version" typeId="1" rel="AffVersion"/>
32+
<m_prj_ticket_relation id="6" ticketId="2" ticketType="Project-Task" type="Project-Version" typeId="1" rel="AffVersion"/>
33+
<m_prj_ticket_relation id="7" ticketId="4" ticketType="Project-Bug" type="Project-Version" typeId="1" rel="FixVersion"/>
3234

3335
<m_prj_version id="1" projectId="1" sAccountId="1"
34-
name="1.0.0" createdTime="2014-06-10 10:10:10" lastUpdatedTime="2014-06-10 10:10:10"
35-
duedate="2014-09-10 10:10:10" description="Version 1.0.0" createdUser="hai79"
36-
status="Open" prjKey="1"/>
36+
name="1.0.0" createdTime="2014-06-10 10:10:10" lastUpdatedTime="2014-06-10 10:10:10"
37+
duedate="2014-09-10 10:10:10" description="Version 1.0.0" createdUser="hai79"
38+
status="Open" prjKey="1"/>
3739
<m_prj_version id="2" projectId="1" sAccountId="1"
38-
name="2.0.0" createdTime="2014-07-10 10:10:10" lastUpdatedTime="2014-07-10 10:10:10"
39-
duedate="2014-09-12 10:10:10" description="Version 2.0.0" createdUser="nghiemle"
40-
status="Closed" prjKey="1"/>
40+
name="2.0.0" createdTime="2014-07-10 10:10:10" lastUpdatedTime="2014-07-10 10:10:10"
41+
duedate="2014-09-12 10:10:10" description="Version 2.0.0" createdUser="nghiemle"
42+
status="Closed" prjKey="1"/>
4143
<m_prj_version id="3" projectId="1" sAccountId="1"
42-
name="3.0.0" createdTime="2014-08-10 10:10:10" lastUpdatedTime="2014-08-10 10:10:10"
43-
duedate="2014-09-15 10:10:10" description="Version 3.0.0" createdUser="hai79"
44-
status="Closed" prjKey="1"/>
44+
name="3.0.0" createdTime="2014-08-10 10:10:10" lastUpdatedTime="2014-08-10 10:10:10"
45+
duedate="2014-09-15 10:10:10" description="Version 3.0.0" createdUser="hai79"
46+
status="Closed" prjKey="1"/>
4547
<m_prj_version id="4" projectId="1" sAccountId="1"
46-
name="4.0.0" createdTime="2014-09-10 10:10:10" lastUpdatedTime="2014-09-10 10:10:10"
47-
duedate="2014-09-17 10:10:10" description="Version 4.0.0" createdUser="nghiemle"
48-
status="Open" prjKey="1"/>
48+
name="4.0.0" createdTime="2014-09-10 10:10:10" lastUpdatedTime="2014-09-10 10:10:10"
49+
duedate="2014-09-17 10:10:10" description="Version 4.0.0" createdUser="nghiemle"
50+
status="Open" prjKey="1"/>
4951
</dataset>

0 commit comments

Comments
 (0)