Intellij java editor code format:
/**
* #param nameOfAParameterVeryLong this is a very long multiple line comment,
* next line starts from beginning.
*/
public void fooVeryLongMethodName(Integer parameter1, Integer parameter2,
String parameter3, String parameter4) {
...
}
How to format the above as the following:
/**
* #param nameOfAParameterVeryLong this is a very long multiple line comment,
* next line starts from beginning.
*/
public void fooVeryLongMethodName(Integer parameter1, Integer parameter2,
String parameter3, String parameter4) {
...
}
Do not align the parameters and comment multi-lines. Is there any settings for this?
Please try the following settings:
With doxygen, I'm used to write
/**
* #brief blah blah
*
* #param foo description of foo
* #param bar description of bar
* #return description of the return value
*/
int f(int foo, unsigned bar);
But what if I don't name one of the parameter? :
int f(int, unsigned bar);
How can I document this parameter when I can't refer to it by name?
Doxygen does not currently (July 2020) implement this functionality. However, a feature request has been opened on the Doxygen GitHub issues page for it:
#6926 Feature request: doc for unnamed parameters
I have a function as follows:
/**
* #param \string[] ...$whitelist
* #return Array
*/
public function whitelist(string ...$whitelist): Array
{
// code
}
How can I pass an array (e.g $arr = [$val1, $val2, ...]) to the function?
Note that I cannot change the function structure because it belongs to a third party class I am using in my code.
/**
* #param \string[] ...$whitelist
* #return Array
*/
public function whitelist(string ...$whitelist): Array
{
// code
}
You pass the arguments by separating them by comma, meaning the whitelist function takes n number of arguments. You are using the splat operator (https://lornajane.net/posts/2014/php-5-6-and-the-splat-operator). So, in your case it may be something like:
whitelist(...['Item 1', 'Item 2', 'Item 3']);
We are migrating site from Intershop 6.4 to Intershop 7.9.
As suggested by Intershop support, we are trying to recreate all the auto-generated classes from the EDL model.
Here is the interface EDL code:
import "enfinity:/core/edl/com/intershop/beehive/core/types.edl";
import "enfinity:/core/edl/com/intershop/beehive/core/capi/domain/PersistentObject.edl";
import "enfinity:/core/edl/com/intershop/beehive/core/capi/domain/PersistentObjectPO.edl";
external PromotionCollection type "java.util.Collection<A1Promotion>";
namespace hr.a1.core.capi.promotion
{
cartridge interface A1Promotion extends PersistentObject
{
/**
* Promotion TMCode.
*/
attribute tmCode: string required;
/**
* Siebel promotion id.
*/
attribute siebelID: string required;
/**
* Promotion name.
*/
attribute name: string required;
/**
* Promotion description / currently URL to CW.
*/
attribute description: string;
/**
* Defines promotion priority / lower values first.
*/
attribute priority: int;
/**
* Holds link to tariff.
*/
attribute tariffID: uuid;
/**
* Contract type (A, M, R).
*/
attribute contractType: string required;
/**
* Contract binding (0, 12, 24).
*/
attribute contractBinding: string required;
/**
* Discount type / MF - monthly fee, HW - hardware, FU - free unit (not used at the moment)
*/
attribute discountType: string required;
/**
* Discount mode / P - percentage or F - fixed amount
*/
attribute discountMode: string;
/**
* Discount amount / either money value or percentage value / stored internally as Money
*/
attribute discountAmount: Money;
/*
* Flag which if it set disables checkbox of current promotion so user can't deselect it.
*/
attribute preselected: boolean;
/**
* Promotion validity / from date.
*/
attribute activeFrom: datetime;
/**
* Promotion validity / to date.
*/
attribute activeTo: datetime;
/**
* Promotion group / D - default, N - personalized, S% - Special
*/
attribute promotionGroup: string required;
/**
* Promotion type / S - single, G - group
*/
attribute promotionType: string required;
/**
* Free units amount type (MB, GB, SMS..)
*/
attribute units: string;
/**
* Group rule defined for promotion if promotion is group promotion
*/
attribute groupRule: string;
/**
* Name of the coupon list for the coupon promotions
*/
attribute couponListName: string;
/**
* HW promotion discount id
*/
attribute discountId: int;
}
}
and this is the PO EDL code:
import "enfinity:/app_core_a1/edl/app_core_a1/capi/A1Promotion.edl";
import "enfinity:/xcs/edl/com/intershop/beehive/xcs/internal/product/ProductPO.edl";
import "enfinity:/core/edl/com/intershop/beehive/core/types.edl";
import "enfinity:/core/edl/com/intershop/beehive/core/capi/domain/PersistentObjectPO.edl";
namespace hr.a1.core.internal.promotion
{
/*
* #author dragisic
*/
orm class A1PromotionPO extends PersistentObjectPO implements A1Promotion table "A1Promotion"
{
/**
* Promotion id.
*/
attribute tmCode : string<25> required column "tm_code";
/**
* Siebel promotion id.
*/
attribute siebelID : string<25> required column "siebel_id";
/**
* Promotion name.
*/
attribute name : string<100> required column "name";
/**
* Promotion description / currently URL to CW.
*/
attribute description : string<255> column "description";
/**
* Defines promotion priority / lower values first.
*/
attribute priority : int column "priority";
/**
* Holds link to tariff.
*/
attribute tariffID : uuid;
/**
* Contract type (A, M, R).
*/
attribute contractType : string<1> required column "contract_type";
/**
* Contract binding (0, 12, 24).
*/
attribute contractBinding : string<4> required column "contract_binding";
/**
* Discount type / MF - monthly fee, HW - hardware, FU - free unit (not used at the moment)
*/
attribute discountType : string<2> required column "discount_type";
/**
* Discount mode / P - percentage or F - fixed amount
*/
attribute discountMode : string<1> column "discount_mode";
/**
* Discount amount / either money value or percentage value / stored internally as Money
*/
attribute discountAmount : Money column "discount_amount";
/**
* Flag which if it set disables checkbox of current promotion so user can't deselect it.
*/
attribute preselected : boolean column "is_preselected";
/**
* Promotion validity / from date.
*/
attribute activeFrom : datetime column "active_from";
/**
* Promotion validity / to date.
*/
attribute activeTo : datetime column "active_to";
/**
* Promotion group / D - default, N - personalized, S% - Special
*/
attribute promotionGroup : string<3> required column "promo_group";
/**
* Promotion type / S - single, G - group
*/
attribute promotionType : string<1> required column "promo_type";
/**
* Free units amount type (MB, SMS..)
*/
attribute units : string<4> column "units";
/**
* Group rule defined for promotion if promotion is group promotion
*/
attribute groupRule : string<10> column "group_rule";
/**
* Name of the coupon list for the coupon promotions
*/
attribute couponListName: string<100> column "coupon_list_name";
/**
* Defines HW promotion discount id.
*/
attribute discountId : int column "discount_id";
/**
* Declare index in search items.
*/
index (contractType, contractBinding);
}
}
However, when we generate the code with the "Code generator for Intershop version 7.2 and later" we get the following compilation errors in the auto-generated class A1PromotionPOKey.java:
"The constructor Object(String) is undefined"
"The hierarchy of the type A1PromotionPOKey is inconsistent"
The auto-generated class looks like this:
// =============================================================================
// File: A1PromotionPOKey.java
// Generated by JGen Code Generator from INTERSHOP Communications AG.
// Generator template: ORMKey.xpt(checksum: b5b09bf4e9329db7d7dafe870b159b0d)
// =============================================================================
// The JGen Code Generator software is the property of INTERSHOP Communications AG.
// Any rights to use are granted under the license agreement.
// =============================================================================
package hr.a1.core.internal.promotion;
import com.intershop.beehive.core.capi.domain.PersistentObjectPOKey;
/**
* This class represents the primary key for objects of type A1PromotionPO.
* The key objects can be used for lookup operations in the database.
*
* #author dragisic
* #generated
*/
public class A1PromotionPOKey extends PersistentObjectPOKey {
/**
* Useless constant to make compiler happy.
*
* #generated
*/
private static final long serialVersionUID = 1L;
/**
* Creates an empty primary key. After creation of a new key object
* you must call the corresponding set<i>Attribute</i> method(s) to
* set the value(s) of the primary key.
*
* #generated
*/
public A1PromotionPOKey() {
}
/**
* Creates a primary key with the specified value(s).
*
* #generated
*/
public A1PromotionPOKey(
String UUID) {
super(UUID);
}
}
We have checked the gradle dependencies and the PersistentObjectPOKey import looks fine and the containing jar is added in the cartridge. We have also tried restarting Studio and refreshing the project, but it doesn't help.
Same EDL model works fine and produces compilable auto-generated code in Enfinity Suite 6.4.
EDIT:
Also, Im attaching errors from the console log during gradle build of the project.
:app_core_a1:compileJavaC:\Work\VIPnet\a1webshop\app_core_a1\src\main\java\hr\a1\core\internal\promotion\A1PromotionPOKey.java:20: error: cannot access CacheClearKey
public class A1PromotionPOKey extends
^
class file for com.intershop.beehive.cache.capi.common.CacheClearKey not found
C:\Work\VIPnet\a1webshop\app_core_a1\src\main\java\hr\a1\core\capi\promotion\A1PromotionMgr.java:11: warning: [deprecation] Manager in com.intershop.beehive.core.capi.common has been deprecated
import com.intershop.beehive.core.capi.common.Manager;
^
C:\Work\VIPnet\a1webshop\app_core_a1\src\main\java\hr\a1\core\internal\promotion\A1PromotionPOFactory.java:14: warning: [deprecation] UUIDMgr in com.intershop.beehive.core.capi.util has been deprecated
import com.intershop.beehive.core.capi.util.UUIDMgr;
^
C:\Work\VIPnet\a1webshop\app_core_a1\src\main\java\hr\a1\core\capi\promotion\A1PromotionMgr.java:11: warning: [deprecation] Manager in com.intershop.beehive.core.capi.common has been deprecated
import com.intershop.beehive.core.capi.common.Manager;
^
C:\Work\VIPnet\a1webshop\app_core_a1\src\main\java\hr\a1\core\internal\promotion\A1PromotionPOFactory.java:14: warning: [deprecation] UUIDMgr in com.intershop.beehive.core.capi.util has been deprecated
import com.intershop.beehive.core.capi.util.UUIDMgr;
^
warning: The following options were not recognized by any processor: '[componentName]'
C:\Work\VIPnet\a1webshop\app_core_a1\src\main\java\hr\a1\core\capi\promotion\A1PromotionMgr.java:11: warning: [deprecation] Manager in com.intershop.beehive.core.capi.common has been deprecated
import com.intershop.beehive.core.capi.common.Manager;
^
C:\Work\VIPnet\a1webshop\app_core_a1\src\main\java\hr\a1\core\internal\promotion\A1PromotionPOFactory.java:14: warning: [deprecation] UUIDMgr in com.intershop.beehive.core.capi.util has been deprecated
import com.intershop.beehive.core.capi.util.UUIDMgr;
^
C:\Work\VIPnet\a1webshop\app_core_a1\src\main\java\hr\a1\core\capi\promotion\A1PromotionMgr.java:24: warning: [deprecation] Manager in com.intershop.beehive.core.capi.common has been deprecated
Manager {
^
C:\Work\VIPnet\a1webshop\app_core_a1\src\main\java\hr\a1\core\internal\promotion\A1PromotionPO.java:120: error: incompatible types: A1PromotionPOKey cannot be converted to PersistentObjectPOKey
super(factory, key);
^
C:\Work\VIPnet\a1webshop\app_core_a1\src\main\java\hr\a1\core\internal\promotion\A1PromotionPOFactory.java:82: error: incompatible types: A1PromotionPOKey cannot be converted to ORMObjectKey
A1PromotionPO instance = (A1PromotionPO) getEngine().getPersistenceManager().createObject(key, getClassDescription());
^
C:\Work\VIPnet\a1webshop\app_core_a1\src\main\java\hr\a1\core\internal\promotion\A1PromotionPOFactory.java:110: warning: [deprecation] UUIDMgr in com.intershop.beehive.core.capi.util has been deprecated
UUIDMgr.getInstance().createUUIDString(), domain.getUUID(), tmCode, siebelID, name, contractType, contractBinding, discountType, promotionGroup, promotionType);
^
C:\Work\VIPnet\a1webshop\app_core_a1\src\main\java\hr\a1\core\internal\promotion\A1PromotionPOFactory.java:110: warning: [deprecation] getInstance() in UUIDMgr has been deprecated
UUIDMgr.getInstance().createUUIDString(), domain.getUUID(), tmCode, siebelID, name, contractType, contractBinding, discountType, promotionGroup, promotionType);
^
C:\Work\VIPnet\a1webshop\app_core_a1\src\main\java\hr\a1\core\internal\promotion\A1PromotionPOFactory.java:110: warning: [deprecation] createUUIDString() in UUIDMgr has been deprecated
UUIDMgr.getInstance().createUUIDString(), domain.getUUID(), tmCode, siebelID, name, contractType, contractBinding, discountType, promotionGroup, promotionType);
^
C:\Work\VIPnet\a1webshop\app_core_a1\src\main\java\hr\a1\core\internal\promotion\A1PromotionPOFactory.java:149: error: incompatible types: A1PromotionPOKey cannot be converted to ORMObjectKey
return (A1PromotionPO) super.getObjectByPrimaryKeyObject(key);
^
C:\Work\VIPnet\a1webshop\app_core_a1\src\main\java\hr\a1\core\internal\promotion\A1PromotionPOFactory.java:178: error: incompatible types: A1PromotionPOKey cannot be converted to ORMObjectKey
return (A1PromotionPO) super.getObjectByPrimaryKeyObject(key, mode);
Is it possible to make two columns work together?
I have tables which has
id |startdate |length |enddate
1 |2013-10-10 03:00:00 |60 |2013-10-10 04:00:00
2 |2013-10-11 04:00:00 |40 |2013-10-10 04:40:00
When I make new row.
I think enddate is possible to be calculated automatically
by values startdate and length.
What I want to do is:
1.input two value (length,startdate)
2.enddate is automatically calculated and keep updated.
How can I manage this?
reference:
my doctrine code is like this below
/**
* #var \DateTime
*
* #ORM\Column(name="startdate", type="datetime")
*/
private $startdate;
/**
* #var \DateTime
*
* #ORM\Column(name="enddate", type="datetime")
*/
private $enddate;
/**
*
* #ORM\Column(name="length",type="integer")
*/
private $length;
You can use events:
/** #PrePersist */
public function updateEndDate()
{
// this won't work because you need to use DateTime() but just as an example
$this->endDate = $this->startDate + $this->length ;
}
Check: http://docs.doctrine-project.org/en/2.0.x/reference/events.html#prepersist
and don't forget to put annotation:
/** #HasLifecycleCallbacks */