it always shows the infobox that i am always failing to get the string value of password and password 1 to confirm if those two are the same and then if it is the same it will insert those values into my local database @FXML     private void handleButtonActionRegister(ActionEvent event) {         String email = textUserRegister.getText();         String password = textRegisterPassword.getText();         String password1 = textRegisterPassword1.getText();         if (password != password1){             infoBox(&quot;Password doesn't match!&quot;, &quot;Failed&quot;, null);}         else{         String sql = &quot;INSERT INTO employee VALUES (?,?)&quot;;         try{             preparedStatement = dbconnect.prepareStatement(sql);             preparedStatement.setString(1, email);             preparedStatement.setString(2, password);             resultSet = preparedStatement.executeQuery();                          Node source = (Node) event.getSource();              dialogStage = (Stage) source.getScene().getWindow();             dialogStage.close();             scene = new Scene(FXMLLoader.load(getClass().getResource(&quot;WelcomePage.fxml&quot;)));             dialogStage.setScene(scene);             dialogStage.show();          }catch(Exception e){e.printStackTrace();}}     }
93
I've been using the == operator in my program to compare all my strings so far. However, I ran into a bug, changed one of them into .equals() instead, and it fixed the bug.  Is == bad? When should it and should it not be used? What's the difference?
55087
i am building a app which takes input from user and then search to a remote database(MySql).And then display the retrieved data on VisualForce page.One important note that my app will be distributable.  here is my controller class  public with sharing class Search  {    public String strTag {get;set;}   public String strlocation {get;set;}    public PageReference find() {              return null;   } }   Thanks in advance.  Updated  public with sharing class Search  {   public String strTag {get;set;} public String strlocation {get;set;}   public PageReference find() {             HttpRequest req = new HttpRequest();   HttpResponse res = new HttpResponse();   Http http = new Http();    req.setEndpoint('https://localhost/salesforce/');   req.setMethod('POST');     req.setCompressed(false);   req.setBody('key1=value1&amp;key2=value2');   req.setHeader('Content-Type', 'application/x-www-form-urlencoded');      try {     res = http.send(req);   } catch(System.CalloutException e) {     system.debug('Callout error: '+ e);   }   system.debug(res.getBody());      return null;  } }   I am getting below error now      error message System.CalloutException: Unauthorized endpoint, please check Setup->Security->Remote site settings. endpoint = localhost/salesforce
47989
Okay, we know that the following two lines are equivalent -    (0 == i) (i == 0)   Also, the first method was encouraged in the past because that would have allowed the compiler to give an error message if you accidentally used '=' instead of '=='.  My question is - in today's generation of pretty slick IDE's and intelligent compilers, do you still recommend the first method?    In particular, this question popped into my mind when I saw the following code -   if(DialogResult.OK == MessageBox.Show("Message")) ...    In my opinion, I would never recommend the above. Any second opinions?
79593
I have a lightning component that displays Knowledge Articles based on Topic IDs that it is configured for. This works great so I went to create my test coverage for it and discovered that the inserted test Knowledge Articles can only ever be 'Draft' making my tests fail since the apex class only looks for 'Online'. Instead of rewriting my component I decided to overload the apex method so that when called without the status parameter it passes in 'Online' allowing my tests to pass in 'Draft' instead. However, the first method signature does not get called from the component resulting in null for the status parameter.  Here is the component controller:  ({     "retrieveArticles" : function(component, event, helper) {         var action = component.get("c.returnArticlesWithTwoTopicIds");         action.setParams({             mainTopicId : component.get("v.mainTopicId"),             secondaryTopicId : component.get("v.secondaryTopicId"),             limitAmount : component.get("v.limitAmount")         });          action.setCallback(this, function(response) {             var state = response.getState();             if (component.isValid() &amp;&amp; state === "SUCCESS") {                 // handle SUCCESS             }             else if (component.isValid() &amp;&amp; state === "ERROR") {                 // handle ERROR             }         });         $A.enqueueAction(action);     } })   Here is the apex class:  public with sharing class KnowledgeArticleVersionCtrl {     @AuraEnabled     public static List&lt;KnowledgeArticleVersion&gt; returnArticlesWithTwoTopicIds(String mainTopicId, String secondaryTopicId, Integer limitAmount) {         return returnArticlesWithTwoTopicIds(mainTopicId, secondaryTopicId, limitAmount, 'Online');     }      @AuraEnabled     public static List&lt;KnowledgeArticleVersion&gt; returnArticlesWithTwoTopicIds(String mainTopicId, String secondaryTopicId, Integer limitAmount, String status) {         // build query string         List&lt;KnowledgeArticleVersion&gt; articles = Database.query(query);         return articles;     } }   Is there something about the component that would cause it to not use the first signature, the one it should match, in place of the second one, which it shouldn't match?
34626
the soql in the following code is failing. The error message is: "Compile failure on line 6, column 5: Unexpected token '&lt;'."   Map&lt;Id, String&gt; profileIds = new Map&lt;Id, String&gt;(); profileIds.put('00eee000000xxxx','System Administrator'); profileIds.put('00eee00000yyyyy','YYY Profile'); profileIds.put('00eee00000zzzzz','ZZZ Profile');  List&lt;User&gt; users = [SELECT Id, Name, Email, ProfileId FROM User WHERE NOT(Email like '%@example.com') AND ProfileId NOT IN :profileIds.keySet()]; System.debug(users.size()); for (User usr: users) {     System.debug(usr.id+'    '+usr.Email); }   When I run the Query in SOQL Editor, it says "unexpected token: AND"  SELECT Id, Name, Email, ProfileId FROM User WHERE NOT(Email like '%@example.com') AND  ProfileId NOT IN ('00eee000000xxxx','00eee00000yyyyy','00eee000000zzzz')   When I remove one of the clauses from the where statement, it works. I do not understand whats wrong with the query. I tried wrapping the query with in parenthesis too, but no luck. for example   List&lt;User&gt; users = [SELECT Id, Name, Email, ProfileId FROM User WHERE (NOT(Email like '%@example.com') AND ProfileId NOT IN :profileIds.keySet())];  List&lt;User&gt; users = [SELECT Id, Name, Email, ProfileId FROM User WHERE (NOT(Email like '%@example.com') AND (ProfileId NOT IN :profileIds.keySet()))];
121895
I have a trigger and a class that seem to be causing an insert fail in Dataloader.  I am trying to insert 200 records to see if an error is generated before moving these to production. I'm just inserting the mandatory fields such as Name, Owner, Market, Customer_Success_Manager__c, and Business Unit.   Each time I get an error:     UpdateCSMTeam:execution of AfterInsertcaused by: System.DmlException:   Insert failed. First exception on row 0 with id01MJ0000009gXthMAE;   first error: INVALID_FIELD_FOR_INSERT_UPDATE, cannot specify Id in an   insert call: [Id]Class.UpdateCSM.updateTeamMem . I've listed the class   and trigger below.   APEX CLASS  public class UpdateCSM {             public static void updateTeamMember(List&lt;Account&gt; accounts) {                     List&lt;AccountShare&gt; ashareLIST = new List&lt;AccountShare&gt;();                     List&lt;AccountTeamMember&gt; ATM = new List&lt;AccountTeamMember&gt;();                    Set&lt;String&gt; rmMember = new Set&lt;String&gt;();                     Map&lt;ID, ID&gt; acctToBRepMap = new Map&lt;ID, ID&gt;();                      for(Account a:accounts){                              AccountShare caSharingRule = new AccountShare();                                caSharingRule.AccountId = a.Id;                                caSharingRule.OpportunityAccessLevel = 'Edit';                                caSharingRule.CaseAccessLevel = 'Edit';                                caSharingRule.AccountAccessLevel = 'Edit';                                caSharingRule.UserOrGroupId = a.Customer_Success_Manager__c;                                ashareLIST.add(caSharingRule);                                    if(a.Customer_Success_Manager__c!= null){                                   AccountTeamMember Teammemberad=new AccountTeamMember();                 Teammemberad.AccountId=a.id;                 Teammemberad.UserId=a.Customer_Success_Manager__c;                 Teammemberad.TeamMemberRole = 'Customer Success Manager';                                   ATM.add(Teammemberad);                             if(!ATM.isEmpty()){                                    insert ATM;                                              insert ashareLIST;                                                         if(a.Customer_Success_Manager__c==null){                                            list&lt;AccountTeamMember&gt; ratm = [SELECT UserId                                                                             FROM AccountTeamMember                                                                             WHERE (TeamMemberRole = 'Customer Success Manager')                                                          AND AccountId =:a.id];                                             if(ratm.size()&gt;0)                                                 delete ratm;                                        }                                    }                                 }                            }                         }                    } ...   APEX TRIGGER  trigger UpdateCSMTeam on Account (After update, After insert){         UpdateCSM.updateTeamMember(trigger.new); }
68772
i have a custom setting called product and under that i created two fields called  and other is string field BD__c. i want to display picklist value based on string matching record. my custom setting looks like AAA |1,2,6,8 BBB |1,2,6,8 NNN|8 so when string value is 1,2,6,8 it should show AAA, BBB when its 8 it should show NNN, but i can see all the values even if BD__c==8  Here is my apex contoller method. can someone suggest me what i am missing  public List &lt; SelectOption &gt; getTR_picklistvalue() {     system.debug('******Start of getTR_picklistvalue');     List &lt; SelectOption &gt; options = new List &lt; SelectOption &gt; ();     options.add(new SelectOption('', '--Select--'));     Map &lt; String, picklistvalue__c &gt; Prod = picklistvalue__c.getAll();     List &lt; String &gt; keys = new List &lt; String &gt; (Prod.keySet());     keys.sort();     for (String key: keys) {         if (Prod.get(Key).BD__c == '1,2,6,8')             Options.add(new SelectOption(Prod.get(Key).picklistvalue__c, Prod.get(Key).Name));         else             Options.add(new SelectOption(Prod.get(Key).picklistvalue__c, Prod.get(Key).Name));         //options.sort();     }     return options;  }
85236
Here is my complete code sample   global class b1 implements Database.Batchable&lt;sObject&gt; {   global final string query;  global final string s_object;  global final string field;  global final string field_value;   global b1 (string q, string s, string f, string v){        Query =q;        s_object=s;        field = f;       field_value =v;    }    global Database.QueryLocator start (Database.BatchableContext BC){   return Database.getQueryLocator (query);   }    global void excute(Database.BatchableContext BC, List&lt;sObject&gt; batch) {   for(s_object o= batch){   o.put(field,field_valu);    }   update batch;   }     global void finish(Database.BatchableContext BC){    } }
118759
Question  I'm writing some code that needs to be able to get the values of the parameters from the method that called into the class. I know how to get all the way to the ParameterInfo[] array, but I don't know how to then get the values. Is this even possible?  If it is, I think it has something to do with using the MethodBody property from the MethodInfo object, which allows you to inspect the IL stream, including properties, but I don't know how to do it, and I haven't found applicable code on Google.  Code  // Finds calling method from class that called into this one public class SomeClass {     public static void FindMethod()     {         for (int i = 1; i &lt; frameCount; i++)         {             var frame = new StackFrame(i);             var methodInfo = frame.GetMethod();             if (methodInfo.DeclaringType != this.GetType())             {                 string methodName = frame.GetMethod().Name;                 var paramInfos = methodInfo.GetParameters();                  // Now what?? How do I get the values from the paramInfos                  break;             }             else if (i == frameCount - 1)             {                 throw new TransportException("Couldn't find method name");             }         }     } }
92333
if ('text'.equals(str))   or   if ('text' == str)   Is there any difference? If yes, then what is it?   Added, after answered.  String q = 'teXt'; system.debug('teXt'.equals(q)); // true system.debug('teXt' == q);      // true system.debug('text'.equals(q)); // false system.debug('text' == q);      // true
33419
Financial Account is a child of Client in a Master-Detail relationship. The client (John Sandbox) has a Wealth Advisor, 'John Smith', on his client record, however, the system debug that pulls finAcct.client__r.Wealth_Advisor__c shows this field as 'null'.  Does anyone have any idea why I am not getting the value in this field? The goal of this trigger is to make sure that the lookup fields for the Client Team (one of which is 'Wealth Advisor') always match between the client record and the financial account record when they are linked. Thanks!      Boolean UpdateMe;     List &lt;Financial_Account__c&gt; FinAcctsToUpdate = new List&lt;Financial_Account__c&gt;();      //Loop through all Financial Accounts in Trigger.new     for(Financial_Account__c finAcct : newFinAccts){         UpdateMe = false;          System.debug('finAcct WA Lookup: ' + finAcct.Wealth_Advisor_Lookup__c);         System.debug('Client: ' + finAcct.client__c);         System.debug('Acct WA: ' + finAcct.client__r.Wealth_Advisor__c);          if (finAcct.Wealth_Advisor_Lookup__c != finAcct.client__r.Wealth_Advisor__c){             finAcct.Wealth_Advisor_Lookup__c = finAcct.client__r.Wealth_Advisor__c;             UpdateMe = true;         }         if(UpdateMe == true){             FinAcctsToUpdate.add(finAcct);         }         UpdateMe = false;     }      if(FinAcctsToUpdate.size() &gt; 0 ){         update FinAcctsToUpdate;     }
69850
I have the following code:  Using cmd As SqlCommand = Connection.CreateCommand     cmd.CommandText = "UPDATE someTable SET Value = @Value"     cmd.CommandText &amp;= " WHERE Id = @Id"     cmd.Parameters.AddWithValue("@Id", 1234)     cmd.Parameters.AddWithValue("@Value", "myValue")     cmd.ExecuteNonQuery End Using   I wonder if there is any way to get the final SQL statment as a String, which should look like this:  UPDATE someTable SET Value = "myValue" WHERE Id = 1234   If anyone wonders why I would do this:   for logging (failed) statements for having the possibility to copy &amp; paste it to the Enterprise Manager for testing purposes
96652
I am facing Mixed DML error in the following case:  static testmethod void method1() {     User u1 = DataFactory.createUser('testUser','test@user.com','permissionSetAPIname');        Obj1 rec1 = DataFactory.createrec1('Record1');     insert rec1;      Obj2 rec2 = DataFactory.createrec2('Rec2',rec1,system.today()-10, system.today()+10 );     insert rec2;       Obj3 rec3 = DataFactory.createrec3(rec2,'Tester',u1,'US');     insert Role;      test.starttest();         //testing code      test.stoptest();  }   However the following is working fine  static testmethod void method1() {      User u1 = new User(Alias = 'testRole',                   Email             = 'role@test.com',                   EmailEncodingKey  = 'UTF-8',                   LastName          = 'user',                   FirstName         = 'test',                   LanguageLocaleKey = 'en_US',                   LocaleSidKey      = 'en_US',                   ProfileId         = [select Id from Profile where Name = 'Basic User' limit 1].Id,                   TimeZoneSidKey    = 'America/Chicago',                   Username          = 'stakeholder@test' + Math.round(Math.random() * 10000) + '.com',                   UserRoleId        = null,                   Country           = 'Great Britain');     insert u1;         Obj1 rec1 = DataFactory.createrec1('Record1');     insert rec1;      Obj2 rec2 = DataFactory.createrec2('Rec2',rec1,system.today()-10, system.today()+10 );     insert rec2;       Obj3 rec3 = DataFactory.createrec3(rec2,'Tester',u1,'US');     insert Role;      test.starttest();         //testing code      test.stoptest();  }   Please explain the difference. As my understanding is that transaction remains the same in both the cases.
116377
I'm trying to populate the Contact lookup when a User creates a new related list object from the Contact page.  I am storing the Contact parameter in a Custom Setting so it can be changed when deploying to Production.  For some reason, whenever I try to bind this custom setting to the URL I get a leading '#' and none of the bindings work correctly.  This is despite using the URLENCODE function in the Visualforce  So when I put this (contactParameterId is != null)  &lt;apex:outputLink value="/{!relList.keyPrefixObject}/e?{!IF(relList.contactParameterId != null, 'CF{!URLENCODE(relList.contactParameterId)}={!URLENCODE(contact.Id)}&amp;', '')}retURL=/{!contact.Id}&amp;saveURL=/{!contact.Id}"&gt;&lt;/apex:outputLink&gt;   I get the URL      {URLENCODE(relList.contactParameterId)}={!URLENCODE(contact.Id)}&amp;retURL=/003U000000PL9LNIA1&amp;saveURL=/003U000000PL9LNIA1   What am I doing wrong?
116915
For a Drupal site, I have written a test script in Selenium IDE that logs in as the administrator, adds a new user and peforms a series of tests on the registration page.  Once this user has been added, I would like to add to this script so that it then goes to the user panel, and removes it again. Getting to the user admin page is simple, and I have the username field stored from earlier, say "test user 2".  In the user admin panel, we have this:    What I need to do is find a way to select the checkbox next to the appropriate user. The problem is that the checkbox is marked up as such:  &lt;input type="checkbox" class="form-checkbox" value="4" id="edit-accounts-4" name="accounts[4]"&gt;   Now, as mentioned before, the only information I have about the user is the username. Unfortunately the id of the checkbox references the internal user id, which is 4. That's information I don't have. However, the username link I can locate because I have the value stored. I can just locate any anchor element containing the username string "test user 2". Markup is:  &lt;a title="View user profile." href="/user/4"&gt;test user 2&lt;/a&gt;   Since I have "test user 2" as the username already stored, I can select this element in my test case. But what I want to do is select the checkbox next to it. There's two ways that I think this can be done:  1) Extract the number "4" from the href attribute and use that to select the checkbox, since all checkbox ids will be of the form "edit-accounts-x" where x is a number.  2) Use some funky xpath to determine that the checkbox is on the same row as the username I have stored.  Thoughts?
6749
What are the best workarounds for using a SQL IN clause with instances of java.sql.PreparedStatement, which is not supported for multiple values due to SQL injection attack security issues: One ? placeholder represents one value, rather than a list of values.  Consider the following SQL statement:  SELECT my_column FROM my_table where search_column IN (?)   Using preparedStatement.setString( 1, "'A', 'B', 'C'" ); is essentially a non-working attempt at a workaround of the reasons for using ? in the first place.    What workarounds are available?
51103
I am populating a junction object on from Events and want to capture info from the Event but getting the Account from Account field pulls null. Same who the name via the Who. But if I query the Event record, the AccountId field is populated. And of course, the code compiles properly. Can someone explain how to grab this related info?  trigger TripMeetingFromMeeting on Event (after insert, after update) {      Set&lt;id&gt;EventId = new Set &lt;ID&gt;();     List &lt;Trip_Meeting__c&gt; TMS = new List &lt;trip_meeting__c&gt;();      for (Event E:trigger.new){         if (e.Business_Trip__c!=null){             TMS.add(new Trip_Meeting__c(Meeting__c =e.id, Business_trip__c=e.Business_Trip__c,                                         Meeting_Date__c=e.ActivityDate, Meeting_subject__c=e.Subject,                                        TripNameDELETE__c=e.Business_Trip__r.name,                                         mWhatID__c=e.Whatid,                                        Meeting_Company__c=e.Account.name,                                        Meeting_Name__c=e.Who.name)                                         );          }     }     system.debug('TMS!!!============================'+TMS);      Database.insert(tms, false);  }